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

devtools/2024/12/22 17:18:23/

1.Stream流的终结方法 

2. collect方法

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

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

java">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集合中

java">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集合中

java">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.ppmy.cn/devtools/122279.html

相关文章

深度学习中的结构化概率模型 - 推断和近似推断篇

序言 在深度学习的广阔领域中&#xff0c;结构化概率模型占据了举足轻重的地位。这类模型不仅捕捉了数据间的复杂关联与依赖性&#xff0c;还通过概率图的形式直观地表达了这些关系&#xff0c;为处理复杂数据提供了强大的框架。推断&#xff0c;作为结构化概率模型中的核心任…

Elasticsearch基础_4.ES搜索功能

文章目录 一、搜索辅助功能1.1、指定返回的字段1.2、结果计数1.3、结果分页 二、搜索匹配功能2.1、查询所有文档2.2、term级别查询2.2.1、term查询2.2.2、terms查询2.2.3、range查询2.2.4、exists查询 2.3、布尔查询2.3.1、must&#xff0c;should&#xff0c;must_not2.3.2、f…

测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布

2024年9月29日&#xff0c;MeterSphere开源持续测试工具正式发布v3.3版本。 在这一版本中&#xff0c;接口测试方面&#xff0c;接口导入功能支持导入Postman、JMX、HAR和MeterSphere格式的文件&#xff0c;接口场景的自定义请求步骤支持cURL快捷导入&#xff1b;测试管理方面…

深入理解JavaScript 的原型继承

JavaScript 的原型链继承机制和 Java 的类继承机制有明显的区别&#xff0c;虽然它们都用于实现对象之间的继承&#xff0c;但它们的实现方式、概念以及运行机制都不同。 1. JavaScript 的原型继承 JavaScript 是基于原型链的继承&#xff0c;主要依赖对象的 __proto__ 属性或…

Springboot3 + MyBatis-Plus + MySql + Vue + ProTable + TS 实现后台管理商品分类(最新教程附源码)

Springboot3 MyBatis-Plus MySql Uniapp 商品加入购物车功能实现&#xff08;针对上一篇sku&#xff09; 1、效果展示2、数据库设计3、后端源码3.1 application.yml 方便 AliOssUtil.java 读取3.2 model 层3.2.1 BaseEntity3.2.1 GoodsType3.2.3 GoodsTypeSonVo3.3 Controll…

C# 泛型使用案例_C# 泛型使用整理

一、系统自带常用的泛型 1.字典&#xff0c;集合 //字典 Dictionary<string, int> dic new Dictionary<string, int>(); //泛型集合 List<int> list new List<int>(); 2.泛型委托&#xff0c;输入参数&#xff0c;输出参数 //泛型 委托---输出参…

如何快速切换电脑的ip地址

在当今的数字化时代&#xff0c;IP地址作为网络身份的重要标识&#xff0c;其重要性日益凸显。无论是出于保护个人隐私的需要&#xff0c;还是为了访问特定的网络服务等&#xff0c;快速切换电脑的IP地址已成为许多用户的迫切需求。本文将为你介绍几种实用的方法&#xff0c;帮…

安装Rust

Rust 是一种系统级编程语言&#xff0c;旨在提供高性能和内存安全&#xff0c;同时避免常见的编程错误。 由 Mozilla Research 推出&#xff0c;Rust 自推出以来因其独特的设计理念和强大的功能而在开发者社区中迅速获得了广泛的关注和采用。 curl --proto ‘https’ --tlsv1.2…