java7java8 集合中对象的某一个字段分组
Java8根据单个字段分组
//假设传入一个非空订单集合
List<BaseOrder> orderList;//想要按照订单号分组
Map<String, List<BaseOrder>> collect = orderList.stream().collect(Collectors.groupingBy(t -> t.getTradeNo()));
根据多个字段分组
Java8
//假设传入一个非空订单集合,想要根据订单号和userId进行分组
@Data
@AllArgsConstructor
@EqualsAndHashCode
class UserTrade{private String userId;private String tradeNo
}List<BaseOrder> orderList;
//分组
Map<UserTrade, List<BaseOrder>> collect = orderList.stream().collect(Collectors.groupingBy(new Function<BaseOrder, UserTrade>() {@Overridepublic UserTrade apply(BaseOrder baseOrder) {return new UserTrade(baseOrder.getUserId(), baseOrder.getTradeNo());}
}));
java7
核心:核心用到的是guava的LinkedListMultimap类.此类可以针对单个key,放多个value,这些value会组成一个list
//假设传入一个非空订单集合,想要根据订单号和userId进行分组
@Data
@AllArgsConstructor
@EqualsAndHashCode
class UserTrade{private String userId;private String tradeNo
}//分组
List<BaseOrder> orderList;
LinkedListMultimap<UserTrade, BaseOrder> multimap = LinkedListMultimap.create();
for(BaseOrder baseOrder:orderList){multimap.put(new UserTrade(baseOrder.getUserId(),baseOrder.getTradeNo()),baseOrder);
}
List<BaseOrder> orders = multimap.get(new UserTrade("123","123"))
java7java8 集合中对象的某一个字段分组相关推荐
- android 集合 内存泄漏,Android内存泄漏第二课--------(集合中对象没清理造成的内存泄漏 )...
一.我们通常把一些对象的引用加入到了集合容器(比如ArrayList)中,当我们不需要该对象时,并没有把它的引用从集合中清理掉,这样这个集合就会越来越大.如果这个集合是static的话,那情况就更严重 ...
- js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [{name ...
- java数组按某个值排序_Js--使用sort根据数组中对象的某一个属性值进行排序
现货深度学习之tensorflow原理样本 87.45元 包邮 (需用券) 去购买 > Js--使用sort根据数组中对象的某一个属性值进行排序 博客说明 文章所涉及的资料来自互联网整理和个人总 ...
- 将查询出来的数据按照一个字段分组且排序过程中,遇到的一些有关group的问题(分组排序应该使用partition by)
目录 我想要的效果 Group By Group By 语法 Group By 错误示例 重点提醒 功能实现(partition by 分区函数) 以往查询出来的数据想要按照某一个字段分组展示,直接按 ...
- stream筛选出集合中对象属性重复值
stream筛选出集合中对象属性重复值 字符串集合筛选 List<String> strings = Arrays.asList("a", "bb" ...
- java集合中对象某属性比较排序
TreeSet:它可以给Set集合中的元素进行指定方式的排序. 保证元素唯一性的方式:通过比较的结果是否为0. 底层数据结构是:二叉树. 排序的第一种方式: 让元素自身具备比较性.只要让元素实现Com ...
- Java8 拉姆达与集合中对象处理方式记录
List<SkuDto> list = productPO.getList().stream().map(e -> new skuDto(e.getSkuId(), e.getPro ...
- 通过Stream流找出集合中对象中某个属性重复的值.
在日常的开发中,经常会碰到对数据库查出来的数据还要进行二次的业务逻辑处理的情况,有时候需要对一个对象集合中的重复的元素进行剔除. 下面是一个demo. 可以找出对象List中,某个属性重复的值. pu ...
- 在使用集合中的contains(),要根据实际情况改写集合中对象的equals(Object obj)方法------改写List集合中equals(Object obj)的方法
如标题,解释都在代码注释中 主方法及目的 ··· package cn.com.testCollection; import java.util.Iterator; import java.util. ...
最新文章
- linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接
- 【宜搭客户说】宜搭帮助教育局搭建教育管理平台
- 酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)...
- 嵌入式根文件系统制作
- HDU5971【瞎搞】
- C语言变量未赋初值时,输出为乱七八糟解释
- 水晶报表基础入门——6.交叉报表设计技术
- javascript 对后台返回的数据进行分类
- TST扫描电镜与透射电镜有什么不同?
- 用计算机画图教案,电脑绘画美术教案设计
- 普通最小二乘法讲解OLS线性回归
- 知乎上线诺贝尔奖主题圆桌 让科普更加多元有趣
- cartographer 老版本 UKF
- poj 1066 Treasure Hunt
- 知识产权创造美好生活
- css 文字两端对齐
- 单身以后老了怎么办?
- [2021年秋招笔试记录]OPPO_8.29_机器学习算法A卷
- 香港举办首个轮椅花车巡游 特首冀提升香港通达程度
- 破解一 3 内购破解之顶端加代码