partitioningBy/groupingBy
时间: 2023-10-04 21:03:57 浏览: 248
partitioningBy和groupingBy是Java 8中的两个收集器(Collector)方法,用于对流中的元素进行分区或分组。
partitioningBy方法根据给定的条件将流中的元素分为两个部分:符合条件的一部分和不符合条件的一部分。结果是一个Map,其中key为布尔值(true或false),value为对应的元素列表。
groupingBy方法则将流中的元素按照给定的分类函数进行分组。结果同样是一个Map,其中key为分类函数的返回值,value为对应的元素列表。
两个方法的使用方式有些不同,partitioningBy方法只有一个重载形式,接受一个Predicate作为参数,而groupingBy方法有多个重载形式,可以根据需要选择合适的分类函数。
下面是使用partitioningBy和groupingBy方法的示例代码:
1. 使用partitioningBy方法进行分区:
Map<Boolean, List<User>> userMap = allUserList.stream().collect(Collectors.partitioningBy(user -> user.getType() == 1));
2. 使用groupingBy方法进行分组:
Map<Integer, List<User>> userGroupMap = allUserList.stream().collect(Collectors.groupingBy(User::getType));
以上是关于partitioningBy和groupingBy方法的简要介绍。这些方法提供了一种方便的方式来对流中的元素进行分区或分组,可以根据实际需求选择合适的方法进行使用。
阅读全文