Java Lambda表达式分组统计:按属性分组并计数
使用Java Lambda表达式和Stream API可以轻松地根据对象属性进行分组,并统计每组数据个数。例如,假设有一个包含a属性的对象列表,可以使用Collectors.groupingBy方法按照a属性分组,并使用Collectors.counting()方法计算每组数据个数。以下是示例代码:\n\njava\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\npublic class Main {\n public static void main(String[] args) {\n List<MyObject> list = Arrays.asList(\n new MyObject("A"),\n new MyObject("B"),\n new MyObject("A"),\n new MyObject("C"),\n new MyObject("B")\n );\n\n Map<String, Long> result = list.stream()\n .collect(Collectors.groupingBy(MyObject::getA, Collectors.counting()));\n\n System.out.println(result);\n }\n}\n\nclass MyObject {\n private String a;\n\n public MyObject(String a) {\n this.a = a;\n }\n\n public String getA() {\n return a;\n }\n}\n\n\n输出结果为:\n\n\n{A=2, B=2, C=1}\n\n\n代码解释:\n\n1. list.stream()将列表转换为流。\n2. Collectors.groupingBy(MyObject::getA, Collectors.counting())对流进行分组操作,MyObject::getA表示按照a属性进行分组,Collectors.counting()表示对每个组进行计数。\n3. result保存分组后的结果,是一个Map,key是a属性的值,value是该属性对应的组中元素的个数。\n4. System.out.println(result)打印结果。\n\n通过使用Lambda表达式和Stream API,可以方便地对对象列表进行分组统计操作。
原文地址: https://www.cveoy.top/t/topic/p949 著作权归作者所有。请勿转载和采集!