写点什么

List 的基础数据的处理

作者:卢卡多多
  • 2022-10-14
    天津
  • 本文字数:1064 字

    阅读完需:约 1 分钟

List 的基础数据的交互


在任务开发的过程中,我们会用到很多基于集合的操作,其中 list 集合我们用得很多,但是大多数是基于集合的数据操作,比如想转化另一个数据的集合,或者是蒋户数集合获取最大值的某个对象,以及过滤出我们需要的数据,又或者是想让把数据去重的操作,等等,我们在开发业务的过程中都会出现;


这次我们就来细节聊聊基于 list 的基本操作,基于 stream 流的操作可以借鉴架构悟空的


# 吃透JAVA的Stream流操作,多年实践总结,我们来展示一下可能会遇见的常见情况;属于 stream 的补充

场景一:

List 集合中,需要查询当前某个对象的某个字段数据最大值,最小值


本质上就是最大值、最小值,list 寻找某个对象中属性最大的一个对象;


 List<DataVo> dataVoList=new arrayList(); //最大值 DataVo mongoMax =  .stream().max(Comparator.comparing(DataVo::getResultDouble)).get(); //最小值 DataVo mongoMin = dataVoList.stream().min(Comparator.comparing(DataVo::getResultDouble)).get();
复制代码

场景二:

List 集合中,需要去掉其他重复的元素活对象,用于统计


stream()流操作


  List<String> collect2 = oneDayTempMongoVoList.stream().map(c -> {            return c.getHour();        }).distinct().collect(Collectors.toList());      
复制代码


set 去重也可以:


 List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));
复制代码

场景三:

List 集合中,需要对其中的对象元素,基于某个属性进行排序(比如时间日期等)



List<DataVo> dataVoList=new arrayList(); dataVoList = dataVoList.stream().sorted(Comparator.comparing((DataVo::getDataTime))).collect(Collectors.toList());
复制代码

场景四:

List 集合中,需要分组,多种数据类型,需要统计,转换成 map 数据



List<DataVo> dataVoList=new arrayList(); Map<String, List<DataVo>> collect = dataVoList.stream().collect(Collectors.groupingBy(DataVo::getHour));
复制代码

场景四:

List 集合中,需要对对象元素进行模糊查询


可以使用 contains()


    List<EqPredictStation> hotSourList = predictStationService.list().stream().filter(w -> w.getCollectGroupName().contains(HOTSOURCE)).collect(Collectors.toList());
复制代码


list 对某个字段模糊查询:


List<PredictEnergyVo> collect = collect.stream().filter(n -> Boolean.FALSE ? n.getCollectGroupName().equals(param.getCollectGroupName()) :                   n.getCollectGroupName().contains(param.getCollectGroupName())).collect(Collectors.toList());
复制代码


发布于: 刚刚阅读数: 6
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020-04-12 加入

公众号:卢卡多多,欢迎一起交流学习 2021年度优质创作者

评论

发布
暂无评论
List的基础数据的处理_List_卢卡多多_InfoQ写作社区