• java中stream流中Collectors.groupingBy和Collectors.partitioningBy实例的区别和联系实例?


    在Java中,Collectors.groupingBy()和Collectors.partitioningBy()都是用于对流元素进行分组的Collectors工具方法。它们之间的区别和联系如下:

    功能:
    Collectors.groupingBy():根据指定的分类函数将流元素分组为一个Map>,其中K表示分组的键,List表示该键对应的元素列表。
    Collectors.partitioningBy():根据指定的条件对元素进行划分,将满足条件的元素放入true键对应的列表,不满足条件的元素放入false键对应的列表。
    返回值类型:
    Collectors.groupingBy():返回一个Map>,其中K是根据分类函数生成的键,List是该键对应的元素列表。
    Collectors.partitioningBy():返回一个Map>,其中true键对应满足条件的元素列表,false键对应不满足条件的元素列表。
    以下是一个示例代码演示Collectors.groupingBy()和Collectors.partitioningBy()的用法和区别:

    java Copy code
    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;

    public class GroupingByPartitioningByExample {
        public static void main(String[] args) {
            List fruits = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");

            // 使用 groupingBy() 根据首字母分组
            Map> groupByResult = fruits.stream()
                    .collect(Collectors.groupingBy(s -> s.charAt(0)));
            
            System.out.println("Grouped by first letter:");
            System.out.println(groupByResult);
            
            // 使用 partitioningBy() 根据字符串长度划分
            Map> partitioningByResult = fruits.stream()
                    .collect(Collectors.partitioningBy(s -> s.length() > 5));
            
            System.out.println("\nPartitioned by length > 5:");
            System.out.println(partitioningByResult);
        }
    }
    在上述示例中,我们有一个水果列表fruits。首先,我们使用groupingBy()方法根据每个水果的首字母将它们分组成一个Map>,其中键是首字母,值是对应的水果列表。

    接下来,我们使用partitioningBy()方法根据水果名称的长度是否大于5将它们进行划分,生成一个Map>,其中true键对应长度大于5的水果列表,false键对应长度不大于5的水果列表。

    通过打印输出,我们可以查看分组和划分操作的结果。

    需要注意的是,groupingBy()和partitioningBy()方法都提供了其他重载版本,使你能够对分组或划分的元素进行更复杂的操作,例如指定元素收集器、映射函数等。这些方法提供了更灵活的选项,以满足不同的需求。

  • 相关阅读:
    【Python 千题 —— 基础篇】输出可以被5整除的数
    硬件控制方法
    【操作符详解】之 移位操作符
    Seata框架详解
    CentOS7用yum安装MySQL8.0 2209170054
    【OpenCV-Python】教程:3-15 分水岭图像分割
    EasyExcel知识【Java程序进行读写生成Excel操作】
    技术管理进阶——管理者如何做绩效沟通及把控风险
    Java代理简介
    任务调度线程池-应用定时任务
  • 原文地址:https://blog.csdn.net/gb4215287/article/details/134376396