一. List 转 Map 集合

/*** 用户表*/
@Data
@AllArgsConstructor
class User {private Long id;  // 主键IDprivate String name;  // 姓名private Integer age;  // 年龄}
class Test {public static void main(String[] args) {List<User> list = new ArrayList<>();list.add(new User(1L, "貂蝉", 16));list.add(new User(2L, "吕布", 18));list.add(new User(3L, "曹操", 18));// 1. 目标 id -> name// 运行结果:{1=貂蝉, 2=吕布, 3=曹操}Map<Long, String> map1 = list.stream().collect(Collectors.toMap(User::getId, User::getName));System.out.println(map1);// 2. 目标 id -> User 对象// 运行结果:{1=User(id=1, name=貂蝉, age=16), 2=User(id=2, name=吕布, age=18), 3=User(id=3, name=曹操, age=18)}Map<Long, User> map2 = list.stream().collect(Collectors.toMap(User::getId, Function.identity()));System.out.println(map2);// 3. 目标 age -> List<User> 分组// 运行结果:{16=[User(id=1, name=貂蝉, age=16)], 18=[User(id=2, name=吕布, age=18), User(id=3, name=曹操, age=18)]}Map<Integer, List<User>> map3 = list.stream().collect(Collectors.groupingBy(User::getAge));System.out.println(map3);}
}

二. 修改 List 集合对象字段值

/*** 用户表*/
@Data
@AllArgsConstructor
class User {private Long id;  // 主键IDprivate String name;  // 姓名private Integer age;  // 年龄private String gender;  // 性别}class Test {public static void main(String[] args) {List<User> list = new ArrayList<>();list.add(new User(1L, "貂蝉", 16, "2"));list.add(new User(2L, "吕布", 18, "1"));list.add(new User(3L, "曹操", 18, "1"));// 运行结果:[User(id=1, name=貂蝉, age=16, gender=女), User(id=2, name=吕布, age=18, gender=男), User(id=3, name=曹操, age=18, gender=男)]list.stream().map( data -> {if (("1".equals(data.getGender()))) {data.setGender("男");} else {data.setGender("女");}return data;}).collect(Collectors.toList());System.out.println(list);}}

三. 拆分值生成新集合

class Test {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("貂蝉,大乔,小乔");list.add("吕布,曹操,关羽");// 运行结果:[貂蝉,大乔,小乔, 吕布,曹操,关羽]list.stream().map( data -> {return StringUtils.isNotBlank(data) ? data.split(","): new String[]{};}).flatMap(Arrays::stream).collect(Collectors.toList());System.out.println(list);}
}

四. 两个 LIST 拷贝相同的属性

List<AddressPO> list = new ArrayList<AddressPO>();
List<AddressVO> voList = list.stream().map(AddressVO.class::cast).collect(Collectors.toList());

stream实战记录相关推荐

  1. 【C/C++基础进阶系列】实战记录 -- Dump 文件生成与分析

    [C/C++基础进阶系列]实战记录 -- Dump 文件生成与分析 [1]Windows 端 Dump 文件的捕获与分析 [1.1]添加 Windows 端 Dump 捕获的代码 代码下载,windo ...

  2. 【网络通信 -- 直播】SRS 实战记录 -- SRS 部署与直播效果测试

    [网络通信 -- 直播]SRS 实战记录 -- SRS 部署与直播效果测试 [1]SRS(Simple Realtime Server) 部署 SRS 代码下载 git clone https://g ...

  3. 定制SPS实战记录 系列之一

    定制SPS实战记录 系列之一<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  4. python ui自动化配置文件,python UI自动化实战记录八:添加配置

    添加配置文件写入测试地址等,当环境切换时只需修改配置文件即可. 1 在项目目录下添加文件 config.ini 写入: [Domain] domain = http://test.domain.cn ...

  5. js cookie 存储checkbox_[cookie实战记录-1]种下一个cookie

    [cookie实战记录-1]种下一个cookie 引子 cookie ~ 也是前端实际工作中一定会碰到的(哎?为什么要说也呢...) 而且由于前一阵 Chrome 的更新改了关于 cookie sam ...

  6. 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试

    [网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...

  7. Hadoop实战记录-目录

    目录 Hadoop实战记录(1)-安装部署:https://blog.csdn.net/weixin_39565597/article/details/104525916

  8. PCL 实战记录 (一)

    PCL 实战记录 (一) 目录 PCL 实战记录 (一) 1.读取.显示.保存 2.KD-TREE 搜索 3.八叉树 点云采样 4.OCTREE 空间分割 5.滤波 6.采样 6.1 下采样 6.2 ...

  9. Web基础之Servlet+JDBC+JSP项目实战记录(一)

    Web基础之Servlet+JDBC+JSP项目实战记录(一) 一.项目说明: 通过前面的学习,我们已经对Servlet有了一定的了解:接下来我们要结合数据库和JSP技术一步一步完成一个小型的动态we ...

最新文章

  1. 学习Vue.js实战(一)
  2. 棒棒糖 宏_棒棒糖图表
  3. Huawei LiteOS 开发指南
  4. MATLAB_平面几何_判断两平面矩形是否干涉
  5. java在未来_如何在java中创建一个完整的未来
  6. Android Device Monitor 的 File Explorer 打开一片空白,不显示文件
  7. 再谈 Formsville
  8. python运维系统开发_老男孩Python运维系统开发教程
  9. c# timer 销毁_C# System.Timers.Timer定时器的使用和定时自动清理内存应用
  10. journalctl命令使用
  11. 频谱泄露、栅栏效应、补零实验
  12. 计算机电缆对绞外径怎样算,电线电缆外径计算方法
  13. 前端性能优化的关键时间点
  14. 游戏网络同步——MMO位置同步
  15. 【89元】爱乐生 上臂式语音电子血压计测量仪 家用医用全自动智能大屏 老人尊享 LZX-B1681-C标准款...
  16. 插入外部dwg文件,避免外部参照
  17. 前端实现登录拼图验证
  18. ShardingSphere实践(7)——数据加密
  19. c语言怎么将两个整数变量值交换,C语言如何利用异或进行两个值的交换详解
  20. 使用chrom访问本地项目需要输入http

热门文章

  1. Vue中通过配置eslintrc.js文件来解决编译时出现的no-trailing-spaces、no-undef等错误
  2. 卸载 Creative Cloud 桌面应用程序
  3. KL divergence JS divergence F divergence
  4. C语言面试题汇总(华为公司)
  5. 自媒体人如何写出10w+爆文,这个工具很有用
  6. iPhone 创新乏力?或许你忽略了苹果专利库的这些黑科技
  7. NPOI导出数据到Word
  8. 批量将文本文件转换为语音文件,看书变成听书。
  9. 使用Linux编写最简单的hello world驱动程序
  10. 计算机自动化装配专机,自动化装配生产线结构原理及其组成形式的详解