当前位置: 首页 > 后端技术 > Java

java7&java8按集合中对象的某个字段分组

时间:2023-04-01 14:10:24 Java

原文java8java8基于普通单字段使用更方便//假设传入一个非空订单集合ListorderList;//我想按订单号String,List>collect=orderList.stream().collect(Collectors.groupingBy(t->t.getTradeNo()));根据多个字段//假设传入一个非空的订单集合,想根据订单号和userId进行分组@Data@AllArgsConstructor@EqualsAndHashCodeclassUserTrade{privateStringuserId;privateStringtradeNo}ListorderList;//GroupMap>collect=orderList.stream().collect(Collectors.groupingBy(newFunction(){@OverridepublicUserTradeapply(BaseOrderbaseOrder){returnnewUserTrade(baseOrder.getUserId(),baseOrder.getTradeNo());}}));java7core:core使用了guava的LinkedListMultimap类。这个类可以为单个键放多个值,这些值会组成一个列表//假设传入一个非空的订单集合,你想根据订单号和userId进行分组@Data@AllArgsConstructor@EqualsAndHashCodeclassUserTrade{私有字符串用户ID;privateStringtradeNo}//GroupListorderList;LinkedListMultimapmultimap=LinkedListMultimap.create();for(BaseOrderbaseOrder:orderList){multimap.put(newUserTrade(baseOrder.getUserId(),baseOrder.getTradeNo()),baseOrder);}Listorders=multimap.get(newUserTrade("123","123"))以上是基于java8和java7的两种不同的分组方式作者:H_Man链接:https://www.jianshu.com/p/932...来源:简书版权归作者所有。如需商业转载,请联系作者获得授权。非商业转载请注明出处。