如何使用Collectors.toMap获取Map <integer,integer>?

时间:2017-04-04 15:13:00

标签: java java-8 java-stream collectors

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()是如何工作的,不知道写什么作为合并函数。

1 个答案:

答案 0 :(得分:4)

使用toMap

相当容易
collect(Collectors.toMap(StudentRecord::getMark, 
        s -> 1, 
        (left, right) -> left + right));

第一个参数是Function,用于映射地图中的Key

第二个是Function,用于映射地图中的Value。由于您需要对它们进行计数,因此它将始终返回1.

第三个是BiFunction,它说明如何合并两个键,以防它们相同。由于你想要计算,你将一直增加一个。