我List<StudentRecord> records
包含StudentRecord
个实例。
public class StudentRecord {
private String lastName;
private String firstName;
private int mark;
//constructor + getters
}
如何使Map<Integer,Integer>
作为键具有标记和值,记录列表中的标记出现次数?注意:我必须使用这种方法toMap。
我自己试过这个:
Map<Integer,Integer>mapaPoOcjenama2=
records.stream()
.collect(Collectors.toMap(StudentRecord::getMark, Collectors.counting(), mergeFunction));
但我现在确定Collectors.counting()是如何工作的,不知道写什么作为合并函数。
答案 0 :(得分:4)
使用toMap
:
collect(Collectors.toMap(StudentRecord::getMark,
s -> 1,
(left, right) -> left + right));
第一个参数是Function
,用于映射地图中的Key
。
第二个是Function
,用于映射地图中的Value
。由于您需要对它们进行计数,因此它将始终返回1.
第三个是BiFunction
,它说明如何合并两个键,以防它们相同。由于你想要计算,你将一直增加一个。