本文收集了网络上Stream流的用法和我在项目中的实际使用案例,不对其原理进行描述(俺也不会,哈哈)。
以下使用有错误、疑问或者更好的写法欢迎评论区讨论学习。
同时也欢迎各位大佬评论区留下本文中未提及的好用的api方法讨论学习。
创建业务逻辑测试实体类。
加入测试数据,以代码示例都以此测试数据为依据。
public static List<User> getUserList() {
List<User> list = new ArrayList<>();
list.add(User.builder().id(1L).userName("剑帝").age(18).height(BigDecimal.valueOf(170.7)).createTime(DateUtil.parseDateTime("2023-05-21 17:17:17")).build());
list.add(User.builder().id(2L).userName("街霸").age(20).height(BigDecimal.valueOf(165.6)).createTime(DateUtil.parseDateTime("2023-05-20 18:17:17")).build());
list.add(User.builder().id(3L).userName("红眼").age(25).height(BigDecimal.valueOf(185.7)).createTime(DateUtil.parseDateTime("2023-06-21 18:17:17")).build());
list.add(User.builder().id(4L).userName("瞎子").age(27).height(BigDecimal.valueOf(180.5)).createTime(DateUtil.parseDateTime("2023-05-30 17:17:17")).build());
list.add(User.builder().id(5L).userName("枪炮师").age(23).height(BigDecimal.valueOf(175.7)).createTime(DateUtil.parseDateTime("2022-05-21 17:17:17")).build());
return list;
}
1、去重方法
需要注意的是 distinct() 在不修改对象重写的equals和hashCode方法情况下,对象中的每个属性值必须完全相等才会被去重。
如果需要对某个属性进行去重的话可以重写equals和hashCode方法,或者使用如下写法。(这也是网上给出的普遍方法,我个人认为这个方法有一点瑕疵,就是新的数据和旧数据顺序不一致了,欢迎评论区留下更好的方法!)
【示例】在测试数据基础上新增去重的测试数据
public static