Stream流 您所在的位置:网站首页 list转成对象 Stream流

Stream流

2023-08-15 08:58| 来源: 网络整理| 查看: 265

文章目录 实体一、从List 对象获取单个对象的某个字段的值以上新的coinList就是list中每个AllCoinEntity对象的coin字段的值 二、List转map三、排序四、求和BigDecimal:int、double、long: Integer 五、List转成一个List(flatMap)5.15.2 五、过滤filter可参考文章:

实体

在这里插入图片描述

一、从List 对象获取单个对象的某个字段的值

在这里插入图片描述

以上新的coinList就是list中每个AllCoinEntity对象的coin字段的值 二、List转map Map collect = coinList.stream().collect(Collectors.toMap(AllCoinEntity::getCoin, AllCoinEntity::getId));

得到的map即是以coin为key,主键id为value的map对象

防止key重复

一般toMap时只用到两个参数,第一个设定Key,第二个设定value。但如果Key重复的话,那就需要用到第三个参数,可以这么写(k1, k2)-> k1。 什么意思呢,就是说如果k1和k2的key都相同,那么只取k1的值去覆盖之前的值,也可以改为取k2的值,这样就解决了duplicate key的问题

Map collect = coinList.stream().collect(Collectors.toMap(AllCoinEntity::getCoin, AllCoinEntity::getId, (k1, k2) -> k1)); 三、排序 achievementList:为成绩集合Achievement:成绩实体score分数为BigDecimal类型 List achievement1 = achievementList.stream().sorted(Comparator.comparing(Achievement::getScore)).collect(Collectors.toList());//根据分数排序 -- 顺序 List achievement2 = achievementList.stream().sorted(Comparator.comparing(Achievement::getScore).reversed()).collect(Collectors.toList());//根据分数排序 -- 倒序

注意:如果getScore方法里面有空值,需提前判断并设置为"",不然会包空指针异常

四、求和 BigDecimal: BigDecimal bigDecimal = list.stream().map(Product::getPrice).reduce(BigDecimal.ZERO,BigDecimal::add); int、double、long: int ageSum = list.stream().mapToInt(User::getAge).sum(); Integer List list = new ArrayList(); list.add(3); list.add(7); list.add(2); IntSummaryStatistics collect = list.stream().collect(Collectors.summarizingInt(value -> value)); System.out.println(collect); 输出: IntSummaryStatistics{count=3, sum=12, min=2, average=4.000000, max=7} 五、List转成一个List(flatMap) 5.1 List list = new ArrayList(); List list2 = new ArrayList(); List list3 = new ArrayList(); List list4 = new ArrayList(); list2.add("123"); list2.add("456"); list3.add("Test"); list3.add("ABCD"); list4.add("noshdfosjf"); list4.add("sfefwemisjfie"); list.add(list2); list.add(list3); list.add(list4); List collect = list.stream().flatMap(Collection::stream).collect(Collectors.toList()); collect.forEach(System.out::println); 结果: [123, 456, Test, ABCD, noshdfosjf, sfefwemisjfie] 5.2 List list = Lists.newArrayList(); list.add("A,B,C,D,E,F"); list.add("Q1,Q2,Q3,Q4"); List list2 = list.stream().map(s -> s.split(",")).flatMap(Arrays::stream).collect(Collectors.toList()); System.out.println(list2); 结果: [A, B, C, D, E, F, Q1, Q2, Q3, Q4] 五、过滤filter

filter方法中的条件为true,则代表当前元素会保留下来

List list = new ArrayList(); list.add(3); list.add(7); list.add(3); List list2 = list.stream().filter(v -> v == 7).collect(Collectors.toList()); System.out.println(list2); 结果: [7] 可参考文章: https://cloud.tencent.com/developer/article/1187831 Stream(上)https://cloud.tencent.com/developer/article/1187833 Stream(下)http://www.runoob.com/java/java8-streams.html 菜鸟教程


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有