码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java8 Stream 常用的集合操作大全 Stream集合处理工具类整理


    java8 Stream 常用的集合操作大全 Stream集合处理工具类整理

      • 概述
      • 获取指定属性的新集合
      • 指定属性去重后的集合
      • 排序后的集合
      • 创建动态list
      • 指定属性的总和
      • 分组后的集合
      • 过滤空值
      • (过滤)符合条件的集合元素数量
      • 返回合并字符串,类似于sql中的concat连接函数
      • 统计结果的收集器
      • 最小年龄的用户
      • 最大年龄的用户
      • 获取结果集合的第一个元素,没有则返回null
      • 匹配判断
      • map转list
      • list转map
      • 集合关联
      • 分页
      • 集合合并
      • 创建并行流

    概述

    • java8新增的stream,给我们操作集合提供了极大的便利。
    • Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。
    • 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理,比如:筛选、排序、聚合等。
    • 元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal
      operation)得到前面处理的结果。
    • 可以对流有多次中间操作,但只能进行一次终端操作。
    List<UserVo> users = Arrays.asList(
                    new UserVo("1", "user1", "男", 10, new Date(), "1"),
                    new UserVo("2", "user2", "女", 13, "2005-10-01", "2"),
                    new UserVo("3", "user3", "女", 16, "2003-07-01", "2"),
                    new UserVo("4", "user4", "男", 19, "2005-10-01", "3"),
                    new UserVo("5", "user5", "女", 14, "2003-10-01", "3"),
                    new UserVo("6", "user6", "女", 10, "2001-10-01", "4"),
                    new UserVo("7", "", "女", 10, "2001-10-01", "5"),
                    new UserVo("8", "user7", "男", 15, "2011-10-01", "4")
            );
    
    List<ClazzVo> clazzs = Lists.newArrayList(
                    new ClazzVo("1", "一班"),
                    new ClazzVo("2", "二班"),
                    new ClazzVo("3", "三班"),
                    new ClazzVo("4", "四班"),
                    new ClazzVo("5", "五班")
            );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    获取指定属性的新集合

    通过java.util.Collection.stream() 方法用集合创建流
    map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
    collect,收集,终端操作,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。
    collect主要依赖java.util.stream.Collectors类内置的静态方法。

    /**
    * 指定属性的集合
    *
    * @return
    */
    public static List<String> getSpecifiedCollectionOfAttributes(List<UserVo> users) {
       
       List<String> userIds = users.stream().map(UserVo::getId).collect(Collectors.toList());
       return userIds;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果:

    12345678

    指定属性去重后的集合

    distinct对流中的元素做去重操作

    /**
    * 指定属性去重后的集合
    *
    * @return
    */
    public static List<String> getSpecifiedCollectionOfDistinctAttributes(List<UserVo> users) {
       
       List<String> sexList = users.stream().map(UserVo::getSex).distinct().collect(Collectors.toList());
       return sexList;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果:

    男 女

    排序后的集合

    按照出生日期,班级排序

    /**
     * 排序后的集合
     *
     * @return
     */
    public static List<UserVo> getSortedCollection(List<UserVo> users) {
       
        List<UserVo> birthSortList = users.stream().sorted((x, y) -> {
            if (x.getBirth().after(y.getBirth())
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Github自动构建及推送DockerHub
    【路径规划】辅助点与多段贝塞尔平滑RRT
    【深度学习实验】卷积神经网络(四):自定义二维汇聚层:最大汇聚(max pooling)和平均汇聚(average pooling)
    Hive--09---函数----窗口函数
    企业微信开发文档
    uniapp分包
    如何在保证身份安全的同时提升员工体验
    【Java】helloworld
    直接插入排序与希尔排序
    大家都能看得懂的源码之ahooks useInfiniteScroll
  • 原文地址:https://blog.csdn.net/m0_51527921/article/details/127566691
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号