Stream流的使用(可以解决工作中80%的此类问题)

List<Object> listObject = new ArrayList<>();
Object object = new Object();
Object:实体对象

注:复杂逻辑建议写sql进行统一管理

将一个对象集转为另一个对象集名称相同字段可以不用赋值:

        listObject.forEach(p->{
        Object object = new Object();
        BeanUtils.copyProperties(p,object);
        object.setId(p.getId);
        });

List提取某个字段集:
获取listObject对象的Id属性集合 distinct(去重)

List<String> strList = listObject.stream().map(Object::getId).distinct().collect(Collectors.toList());

List提取某个字段获取此字段的总计:
获取listObject对象的orderNum属性的总计

total = listObject.stream().mapToInt(Object::getOrderNum).sum();

将List对象转成Map:
如果null==e.getOrderCode()则value""

Map<String, String> map= listObject.stream().collect(Collectors.toMap(Object::getId, e -> (null==e.getOrderCode() ? "" : e.getOrderCode())));

排序:
sorted正序排序 reversed倒序排序

//正序
List<Object> listObject = listObject.stream().sorted(Comparator.comparing(Object::getId)).collect(Collectors.toList());
//倒序
List<Object> listObject = listObject.stream().sorted(Comparator.comparing(Object::getId).reversed()).collect(Collectors.toList());

分组:
groupingBy分组

Map<Long, List<Object>> mapList = listObject
        .stream()
        .collect(Collectors.groupingBy(p -> p.getId(), Collectors.toList())); 

过滤:
filter过滤

listObject = listObject.stream().filter(p ->
        Objects.equals(p.getId(),p.getOrderCode)).collect(Collectors.toList());

过滤返回重复数据:

List<String> responseList = listObject.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()))
        .entrySet().stream().filter(e -> e.getValue() > 1)
        .map(Map.Entry::getKey).collect(Collectors.toList());     

返回第一条数据:
findFirst查询第一条数据,orElse如果不存在则返回nulll

Object object = listObject.stream().sorted(Comparator.comparing(Object::getId).reversed()).findFirst().orElse(null);

扩展:
@云深i不知处
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值