streaml流判断两个对象集合中元素是否相等并把一个数组中的元素添加到另一个集合中、根据某个元素排序

stream 流判断两个对象集合中元素是否相等并把一个数组中的元素添加到另一个集合中

个人经验: 如果仅判断是否相等的话可以直接用双层for循环判断,但这种写法虽然可以实现功能,但是他的缺点就是,如果在数据量很大的情况下,性能不是那么好,数据处理不合理。不推荐这种写法。
还有第二种方法:就是用stream流处理,效率要稍微好一点。既可以判断元素是否相等,也可以处理两个对象集合中元素的数据。
废话不多说,直接看实例:

//集合一:
List<ProjectFinishedSubjectStatisticsDTO> projectDTOS =new ArrayList<>();
//集合二:
List<ProjectFinishedSubjectStatisticsDTO> projectDTOList =
            projectFinishedMapper.querySubjectStatistics(projectFinishedQueryDTO,theme);

//stream流判断
for (ProjectFinishedSubjectStatisticsDTO projectDTO : projectDTOS) {
			//如果集合一种的元素和集合二中的元素相等,会把集合二中元素相等的对象取出,就可以做相应的数据处理了
            List<ProjectFinishedSubjectStatisticsDTO> collect = projectFinishedSubjectStatisticsDTOList.stream()
                .filter(tmp -> projectDTO.getTheme().equals(tmp.getTheme())).collect(Collectors.toList());
            if (!CollectionUtils.isEmpty(collect)) {
                projectDTO.setTotalQuantity(collect.get(0).getTotalQuantity());
            } else {
                projectDTO.setTotalQuantity(BigDecimal.valueOf(0));
            }
        }

更新:
两个集合合并另外一种写法:stream流自带的方法.concat()
例:
在这里插入图片描述

stream流根据某个对象排序


projectFinishedSubjectStatisticsDTOList.stream().sorted(Comparator.comparing(ProjectFinishedSubjectStatisticsDTO::getTotalQuantity,Comparator.nullsLast(BigDecimal::compareTo)));

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值