ここでaが定義されているMap
形式の入力を受け取るメソッドを書いています。Map<Term, List<Integer>>
Term
方法:
Map
を使用してそれらをフィルタリングしTerm
ます。min(List.size(), 5)
)にキャップして、出力をグローバル変数(たとえば、totalSum
)に追加します。totalSum
これは私がこれまでに書いたものです:
inputMap
.entrySet()
.stream()
.filter(entry -> entry.getKey().field().equals(fieldName)) // Keep only terms with fieldName
.forEach(entry -> entry.getValue()
.map(size -> Math.min(entry.getValue().size(), 5))) // These 2 lines do not work
.sum();
リストのストリームを入力として受け取り、それらのリストごとに整数を出力して、すべての出力の合計を返すことができません。
私は明らかにforループを使用してそれを書くことができますが、私はJava 8を学ぼうとしていて、この問題がそれを使用して解決できるかどうか興味がありました。
forEach
メソッドは必要ありません。あなたはできるmap
の各エントリMap
にはint
、およびsum
それらの整数:
int sum = inputMap
.entrySet()
.stream()
.filter(entry -> entry.getKey().field().equals(fieldName))
.mapToInt(entry -> Math.min(entry.getValue().size(), 5))
.sum();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加