当前位置: 首页 > news >正文

Stream流的终结方法(二)——collect

1.Stream流的终结方法 

2. collect方法

collect方法用于收集流中的数据放到集合中去,可以将流中的数据放到List,Set,Map集合中

2.1 将流中的数据收集到List集合中

package com.njau.d10_my_stream;import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** 目标:掌握Stream流的终结方法* 名称                                                               说明* collect(Collector collector)                                       收集流中的数据 ,放到集合中*/
public class StreamDemo10 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list,"张无忌-男-15","周芷若-女-16","赵敏-女-17","张强-男-18","张三丰-男-19","张翠山-男-23","张良-男-20","王二麻子-男-21","谢广坤-男-22");// 1.收集到List集合中去Stream<String> stream1 = list.stream();List<String> stringList = stream1.collect(Collectors.toList());System.out.println(stringList);// 将所有男性收集到List集合中去Stream<String> stream11 = list.stream();List<String> stringList1 = stream11.filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toList());System.out.println(stringList1);}
}

使用.collect方法中的(Collectors.toList())方法可以将流中的数据收集到一个ArrayList集合中去。

2.2 将流中的数据收集到Set集合中

package com.njau.d10_my_stream;import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** 目标:掌握Stream流的终结方法* 名称                                                               说明* collect(Collector collector)                                       收集流中的数据 ,放到集合中*/
public class StreamDemo10 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list,"张无忌-男-15","周芷若-女-16","赵敏-女-17","张强-男-18","张三丰-男-19","张翠山-男-23","张良-男-20","王二麻子-男-21","谢广坤-男-22");// 2.收集到Set集合中去Stream<String> stream2 = list.stream();Set<String> stringSet = stream2.collect(Collectors.toSet());System.out.println(stringSet);      // set集合本就无序,不可重复// 将所有男性收集到Set集合中去,会转成HashSet集合,HashSet底层重写了hashCode和equals方法,因此相同的会去除重复Stream<String> stream21 = list.stream();Set<String> stringSet1 = stream21.filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toSet());System.out.println(stringSet1);}
}

使用.collect方法中的(Collectors.toSet())方法可以将流中的数据收集到一个HashSet集合中去。由于HashSet集合对于String类型在底层重写了equals方法和hashCode方法,因此会去除重复的元素。

2.3 将流中的数据收集到Map集合中

package com.njau.d10_my_stream;import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** 目标:掌握Stream流的终结方法* 名称                                                               说明* collect(Collector collector)                                       收集流中的数据 ,放到集合中*/
public class StreamDemo10 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list,"张无忌-男-15","周芷若-女-16","赵敏-女-17","张强-男-18","张三丰-男-19","张翠山-男-23","张良-男-20","王二麻子-男-21","谢广坤-男-22");// 3.收集到Map集合中去// 将所有男性收集到Map集合中去// toMap用法详解:/*参数一:表示生成键的规则参数二:表示生成值的规则匿名内部类new Function:泛型一:要作为键的数据原本的数据类型  泛型二:键的数据类型apply方法:形参:传入的要作为键(值)的原始数据方法体:生成键(值)返回值:键(值)的数据*/Stream<String> stream3 = list.stream();Map<String, Integer> stringIntegerMap = stream3.filter(s -> "男".equals(s.split("-")[1])).collect(Collectors.toMap(new Function<String, String>() {@Overridepublic String apply(String s) {return s.split("-")[0];}},new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return Integer.parseInt(s.split("-")[2]);}}));System.out.println(stringIntegerMap);}
}

在toMap方法中要定义两个匿名内部类对象(分别对应参数1和参数2),第一个匿名内部类对象(参数1)是进行Map集合中键的生成的,第二个匿名内部类对象(参数2)是进行Map集合中值的生成的。

匿名内部类中的泛型1:要作为键(值)的数据原本的数据类型

匿名内部类中的泛型2:键(值)的数据类型

apply方法:

        形参:传入的要作为键(值)的原始数据
        方法体:生成键(值)
        返回值:键(值)的数据

3. stream流总结

http://www.lryc.cn/news/454352.html

相关文章:

  • 【C语言系统编程】【第一部分:操作系统知识】1.1.操作系统原理
  • 基于Java+VUE+echarts大数据智能道路交通信息统计分析管理系统
  • leetcode-42. 接雨水 单调栈
  • ThinkPHP和PHP的区别
  • clientWidth,offsetWidth,scrollHeight
  • SVN版本回退
  • IDEA关联Tomcat
  • MongoDB mongoose 的 save、insert 和 create 方法的比较
  • Maven安装使用
  • 微信第三方开放平台接入本地消息事件接口报错问题java.security.InvalidKeyException: Illegal key size
  • 如何只修改obsidian图片链接为markdown
  • AI不可尽信
  • [C++]使用纯opencv部署yolov11旋转框目标检测
  • Python入门--函数
  • winFrom界面无法打开
  • 【Linux】Ubuntu20.04上使用RabbitVCS的图形化SVN
  • DMA直接存储器存取
  • java计算机毕设课设—坦克大战游戏
  • Vue入门-指令学习-v-on
  • Maven的生命周期与依赖作用域介绍
  • Django学习笔记四:urls配置详解
  • NIO的callback调用方式
  • 百度文心智能体平台开发萌猫科研加油喵
  • Hive数仓操作(十六)
  • 第十二届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(第一套)
  • MongoDB入门:安装及环境变量配置
  • 利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)
  • RCE(remote command/code execute)远程命令注入
  • ​一篇关于密码学的概念性文章
  • 什么是汽车中的SDK?