vin*_*ukl 6 java iterator java-8 java-stream collectors
我正在编写一个方法,它接受在这里定义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();
Run Code Online (Sandbox Code Playgroud)
我无法将列表流作为输入,为每个列表输出一个整数并返回所有输出的总和.
我显然可以使用for循环来编写它,但我正在尝试学习Java 8,并且好奇如果使用它可以解决这个问题.
Era*_*ran 11
你不需要这个forEach方法.你可以将map每个条目转换Map为an int,以及sum那些整数:
int sum = inputMap
.entrySet()
.stream()
.filter(entry -> entry.getKey().field().equals(fieldName))
.mapToInt(entry -> Math.min(entry.getValue().size(), 5))
.sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |