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

news2024/10/4 5:22:15

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>() {
                                             @Override
                                             public String apply(String s) {
                                                 return s.split("-")[0];
                                             }
                                         },
                        new Function<String, Integer>() {
                            @Override
                            public 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.coloradmin.cn/o/2187421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—560. 和为 K 的子数组【中等】(unordered_map)

2024每日刷题&#xff08;166&#xff09; Leetcode—560. 和为 K 的子数组 C实现代码 class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> mp{{0, 1}};int ans 0;int prefix 0;for(int i 0; i < nums.size…

深度学习----------------------------编码器、解码器架构

目录 重新考察CNN重新考察RNN编码器-解码器架构总结编码器解码器架构编码器解码器合并编码器和解码器 重新考察CNN 编码器&#xff1a;将输入编码成中间表达形式&#xff08;特征&#xff09; 解码器&#xff1a;将中间表示解码成输出。 重新考察RNN 编码器&#xff1a;将文…

(11)MATLAB莱斯(Rician)衰落信道仿真2

文章目录 前言一、莱斯衰落信道仿真模型二、仿真代码与结果1.仿真代码2.仿真结果画图 三、后续&#xff1a;四、参考文献&#xff1a; 前言 首先给出莱斯衰落信道仿真模型&#xff0c;该模型由直射路径分量和反射路径分量组成&#xff0c;其中反射路径分量由瑞利衰落信道模型构…

水下垃圾识别数据集支持yolov5、yolov6、yolov7、yolov8、yolov9、yolov10总共3131张数据训练集1886张带标注的txt文件

水下垃圾识别数据集 支持yolov5、yolov6、yolov7、yolov8、yolov9、yolov10 总共3131张数据 训练集1886张 带标注的txt文件 水下垃圾识别数据集介绍 数据集名称 水下垃圾识别数据集 (Underwater Trash Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目…

【一文理解】conda install pip install 区别

大部分情况下&#xff0c;conda install & pip install 二者安装的package都可以正常work&#xff0c;但是混装多种package后容易版本冲突&#xff0c;出现各种报错。 目录 检查机制 支持语言 库的位置 环境隔离 编译情况 检查机制 conda有严格的检查机制&#xff0c…

python-线程与进程

进程 程序编写完没有运行称之为程序。正在运行的代码&#xff08;程序&#xff09;就是进程。在Python3语言中&#xff0c;对多进程支持的是multiprocessing模块和subprocess模块。multiprocessing模块为在子进程中运行任务、通讯和共享数据&#xff0c;以及执行各种形式的同步…

【Java数据结构】 链表

【本节目标】 1. ArrayList 的缺陷 2. 链表 3. 链表相关 oj题目 一. ArrayList的缺陷 上节课已经熟悉了ArrayList 的使用&#xff0c;并且进行了简单模拟实现。通过源码知道&#xff0c; ArrayList 底层使用数组来存储元素&#xff1a; public class ArrayList<E>…

探索Spring Boot:实现“衣依”服装电商平台

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

深入理解 CSS 浮动(Float):详尽指南

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;目录1. 什么是 CSS 浮动&#xff1f;2. CSS 浮动的历史背景3. 基本用法float 属性值浮动元素的行为 4. 浮动对文档流的影响5. 清除浮动clear 属性清除浮动的技巧1. 使用…

从零开始讲PCIe(1)——PCI概述

一、前言 在之前的内容中&#xff0c;我们已经知道了PCIe是一种外设总线协议&#xff0c;其前身是PCI和PCI-X&#xff0c;虽然PCIe在硬件上有了很大的进步&#xff0c;但其使用的软件与PCI系统几乎保持不变。这种向后兼容性设计&#xff0c;目的是使从旧设计到新设计的迁移更加…

【QGis】生成规则网格/渔网(Fishnet)

【QGis】生成规则网格/渔网&#xff08;Fishnet&#xff09; QGis操作案例参考 QGIS下载安装及GIS4WRF插件导入可参见另一博客-【QGIS】软件下载安装及GIS4WRF插件使用。 QGis操作案例 1、加载中国省级边界&#xff0c;QGis界面如下&#xff1a; 查看坐标系&#xff1a; 如…

详解JVM类加载机制

❝ 前几篇文章我们分别详细描述了 JVM整体的内存结构 JVM对象内存是如何布局的以及内存分配的详细过程 但是对JVM内存结构各个模块没有深入的分析&#xff0c;为了熟悉JVM底层结构&#xff0c;接下来将把JVM运行时数据区的各个模块逐一分析&#xff0c;体系化的理解JVM的各个模…

【S32K3 RTD LLD篇5】K344 ADC SW+HW trigger

【S32K3 RTD LLD篇5】K344 ADC SWHW trigger 一&#xff0c;文档简介二&#xff0c;ADC SW HW 触发2.1 软硬件平台2.2 SWADC 软件触发2.3 SWBCTUADC 软件BCTU触发2.4 PITTRIGMUXADC 硬件PIT TRIGUMX触发2.5 EMIOSBCTUHWADC硬件EMIOS BCTU触发2.6 EMIOSBCTUHW LISTADC硬件EMIOS …

【计算机毕业设计】springboot游戏分享网站

摘 要 网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合&#xff0c;利用java技术建设游戏分享网站&#xff0c;实现游戏分享的信息化。则对于进一步提高游戏分享管理发展&#xff0c;丰富游戏分享管理经验能起到不少的促进作用。 游戏分享网站能够…

Oracle架构之物理存储中各种文件详解

文章目录 1 物理存储1.1 简介1.2 数据文件&#xff08;data files&#xff09;1.2.1 定义1.2.2 分类1.2.2.1 系统数据文件1.2.2.2 撤销数据文件1.2.2.3 用户数据文件1.2.2.4 临时数据文件 1.3 控制文件&#xff08;Control files&#xff09;1.3.1 定义1.3.2 查看控制文件1.3.3…

【重学 MySQL】五十五、浮点和定点数据类型

【重学 MySQL】五十五、浮点和定点数据类型 种类选择数据精度说明浮点数据精度定点数据精度总结 精度误差说明浮点数据精度误差定点数据精度误差总结 示例注意事项开发中经验 在MySQL中&#xff0c;浮点和定点数据类型用于存储小数和实数。 种类 MySQL提供了两种主要的浮点数…

SuiteCRM系统 responseEntryPoint SQL注入复现(CVE-2024-36412)

0x01 产品描述&#xff1a; SuiteCRM是一款开源的CRM&#xff08;客户关系管理&#xff09;系统&#xff0c;它致力于为世界各地的用户提供高效、灵活和可定制的CRM解决方案。它为企业和组织提供了一套完整的客户关系管理解决方案&#xff0c;无论是中小型企业还是大型企业&…

Python和R及Julia妊娠相关疾病生物剖析算法

&#x1f3af;要点 算法使用了矢量投影、现代优化线性代数、空间分区技术和大数据编程利用相应向量空间中标量积和欧几里得距离的紧密关系来计算使用妊娠相关疾病&#xff08;先兆子痫&#xff09;、健康妊娠和癌症测试算法模型使用相关性投影利用相关性和欧几里得距离之间的关…

linux第二课:常用命令

Kali Linux&#xff0c;黑客必备神器。跟着我&#xff0c;带你从入门到入狱&#xff01; 第二课&#xff0c;常用命令。 1.whoami 翻译为中文&#xff1a;我是谁 用途&#xff1a;输出现在自己的用户身份(用户名) 参数&#xff1a;无参数 好吧&#xff0c;这透明度一调都不…

基于SpringBoot+Vue的汽车保险理赔系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…