对List进⾏分组(java8的Stream分组的groupBy的使⽤)
对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().upingBy(ord -> OrderId));
其中Map<String,List> map 中的String 是 groupingBy⾥的属性;如果需要分组前进⾏判断,可以加个过滤;
Map<String,List<Order>> map = list.stream().filter(ord -> OrderId!= null)java stream
.upingBy(h -> h.getOrderID));
我要做的需要通过两个字段进⾏分组,所以我在groupingBy ⾥⾯加了两个字段;
Map<String,List<Order>> map = list.stream().upingBy(ord -> OrderId+“;”+ OrderGoodsId()));
分组是按照groupingBy⾥⾯拼接的字段进⾏分组的,我这⾥加上";"主要是为了区分订单号和产品号;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。