Collectors.toMap和Collectors.groupingBy
时间: 2023-10-28 13:58:47 浏览: 128
浅谈Java之Map 按值排序 (Map sort by value)
Collectors.toMap和Collectors.groupingBy都是Java 8中的流操作工具类Collectors提供的用于收集元素的方法。
Collectors.toMap用于将流中的元素收集到一个Map中。它的使用方式是Collectors.toMap(keyMapper, valueMapper, mergeFunction)。其中keyMapper是一个Function,用于指定Map中的键是根据流中的元素如何映射得到的;valueMapper也是一个Function,用于指定Map中的值是根据流中的元素如何映射得到的;mergeFunction是一个BinaryOperator,用于在遇到键冲突时指定如何处理冲突。如果不提供mergeFunction,当遇到键冲突时会抛出IllegalStateException异常。
例如,我们可以使用Collectors.toMap将一个学生列表按照学生的id作为键,学生对象本身作为值收集到一个Map中。这样可以方便地根据学生id来查找对应的学生对象。
Collectors.groupingBy用于将流中的元素按照某个属性进行分组,并将分组结果收集到一个Map中。它的使用方式是Collectors.groupingBy(classifier)。其中classifier是一个Function,用于指定根据流中的元素的某个属性进行分组。分组的结果是一个Map,键是属性的值,值是符合该属性值的元素集合。
例如,我们可以使用Collectors.groupingBy将一个学生列表按照学生的id进行分组,将具有相同id的学生放在同一组中。这样可以方便地按照学生id来查找对应的学生集合。
阅读全文