对List进行分组(java8的Stream 分组的groupBy 的使用)
程序员文章站
2022-05-28 13:37:12
...
对List进行分组(java8的Stream 分组的groupBy 的使用)
最近在做一个功能:对一个接口接收的List数据进行校验,同一个订单里的一个产品id只能添加一次。本来想是在入库的时候通过SQL语句进行处理的。但是由于这个数据接口之前同事写了很多的校验,是在是又*又长。在度娘上查一下,发现了JAVA8 可以通过Stream对List进行处理(这里主要是关于分组的);
Order order1 = new Order();
order1.setOrderId("123");
Order1.setGoodsId("S1");
Order order2 = new Order();
order2.setOrderId("123");
Order2.setGoodsId("S2");
Order order2 = new Order();
order2.setOrderId("1234");
Order2.setGoodsId("S3");
List<Order> list = new ArrayList();
List.add(order1);
List.add(order2);
List.add(order3);
Map<String,List<Order>> map = list.stream().collect(Collectors.groupingBy(ord -> ord.getOrderId));
其中Map<String,List> map 中的String 是 groupingBy里的属性;如果需要分组前进行判断,可以加个过滤;
Map<String,List<Order>> map = list.stream().filter(ord -> ord.getOrderId!= null)
.collect(Collectors.groupingBy(h -> h.getOrderID));
我要做的需要通过两个字段进行分组,所以我在groupingBy 里面加了两个字段;
Map<String,List<Order>> map = list.stream().collect(Collectors.groupingBy(ord -> ord.getOrderId+“;”+ ord.getOrderGoodsId()));
分组是按照groupingBy里面拼接的字段进行分组的,我这里加上";"主要是为了区分订单号和产品号;
上一篇: Java8 Stream 使用
下一篇: *应主动参与大数据应用
推荐阅读
-
【转载】C#中List集合使用Reverse方法对集合中的元素进行倒序反转
-
pandas数据分组groupby()和统计函数agg()的使用
-
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
-
Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合
-
java对集合中的某个类的属性按首字母分组排序(可直接使用)
-
pandas分组之后对相同group内的字段进行合并
-
python中pandas对多列进行分组统计的实现
-
java8的新特性,Collections.sort(排序的List集合)的使用,对list封装Map里面的某个值进行排序
-
List对象集合按照属性排序、分组,并按照分组后每组的多少进行排序。
-
python中分组函数groupby和分组运算函数agg的使用