悦书阁 悦书阁
首页
学习笔记
技术文档
idea插件开发
更多
  • 分类
  • 标签
  • 归档

Felix

大道至简 知易行难
首页
学习笔记
技术文档
idea插件开发
更多
  • 分类
  • 标签
  • 归档
  • 部署文档

  • 常用手册

  • 经验技巧

    • stream使用
      • Oracle笔记
      • AES加解密
      • Git技巧备忘
      • Feign支持BasicAuth验证
      • Feign远程调用
      • Mybatis-xml语法备忘
      • 邮件发送自定义Excel
      • SpringBoot集成第三方组件
      • SpringBoot集成问题记录
      • mybaits plus 代码生成器
      • 阿尔萨斯(Arthas)
    • 技术文档
    • 经验技巧
    liufei379
    2022-06-01
    目录

    stream使用

    # 1.list<DTO> 转list<String>

    List<String> ids = dtos.stream().map(DTO::getId).distinct().collect(Collectors.toList());
    
    1

    # 2.list<DTO>转map<String,List<DTO>>

    Map<String, List<DTO>> map = dtos.stream().collect(Collectors.groupingBy(DTO::getId));
    
    1

    # 3.list转map<key,value>

    Map<Integer,String> map = dtos.stream().collect(Collectors.toMap(DTO::getId,DTO::getName));
    
    1

    # 4.list<DTO>转map<key,DTO>

     # 指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身,key 冲突的解决办法,这里选择第二个key覆盖第一个key
     Map<Integer,DTO> map = dtos.stream().collect(Collectors.toMap(DTO::getId, Function.identity(),(key1,key2)->key2));
    
    1
    2

    # 5.list<DTO>转string拼接

    String str = dtos.stream().map(DTO::getId).collect(Collectors.joining(","));
    
    1

    # 6.list<DTO>求和

     # mapToInteger 、 mapToDouble 等等
     Integer returnCount = dtos.stream().mapToInteger(DTO::getNum).sum(); 
     double returnCount = dtos.stream().mapToDouble(DTO::getNum).sum(); 
    
    1
    2
    3

    # 7.filter 过滤器使用

     //需求 返回以大开头 长度为2的集合 然后打印出来
     List<String> list = new ArrayList<>();
            list.add("大佬");
            list.add("大哥");
            list.add("大哥大");
            
            list.stream()
            	.filter(s -> s.startsWith("大"))
            	.filter(s -> s.length() == 2)
            	.forEach(System.out::println);   
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    # 8.limit / skip / concat

    通过 limit 方法可以对流进行截取,只取用前 n 个。
    list.stream().limit(2);
    通过 skip  方法可以对流进行截取,保留n后数组
    list.stream().skip(2);
    通过 concat 可以对流进行合并
    Stream<String> concat = Stream.concat(list.stream(), list.stream());
    
    1
    2
    3
    4
    5
    6
    上次更新: 2026/3/11 21:47:04
    Git常用命令
    Oracle笔记

    ← Git常用命令 Oracle笔记→

    最近更新
    01
    实现idea开发的关键步骤
    10-05
    02
    Redis高可用架构
    09-09
    03
    Zookeeper高可用
    08-31
    更多文章>
    Theme by Vdoing | Copyright © 2022-2026 Felix | 粤ICP备17101757号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式