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.mzph.cn/pingmian/55494.shtml

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

相关文章

鸿蒙开发(NEXT/API 12)【管理应用与Wear Engine服务的连接状态】手机侧应用开发

监测应用与Wear Engine服务的连接状态 华为运动健康App在后台停止服务&#xff08;如功耗过高&#xff09;&#xff0c;从而导致应用与Wear Engine服务的连接状态发生变化。对于类似这种不确定的断开情况&#xff0c;开发者可以通过本功能特性了解当前应用和Wear Engine的连接…

五子棋双人对战项目(3)——匹配模块

目录 一、分析需求 二、约定前后端交互接口 匹配请求&#xff1a; 匹配响应&#xff1a; 三、实现游戏大厅页面&#xff08;前端代码&#xff09; game_hall.html&#xff1a; common.css&#xff1a; game_hall.css&#xff1a; 四、实现后端代码 WebSocketConfig …

初识算法 · 双指针(2)

目录 前言&#xff1a; 盛最多水的容器 题目解析&#xff1a; 算法原理&#xff1a; 算法编写&#xff1a; 有效三角形的个数 题目解析&#xff1a; 算法原理&#xff1a; 算法编写&#xff1a; 前言&#xff1a; 本文介绍两个题目&#xff0c;盛最多水的容器和有效三…

【Blender Python】5.Blender场景中的集合

概述 这里的“集合”是指Blender场景中的集合。你可以在“大纲视图”面板中看到 图标的&#xff0c;就是集合&#xff0c;可以看做是文件夹&#xff0c;用于分类和整理场景中的对象。 获取场景的集合 >>> C.scene bpy.data.scenes[Scene]>>> C.scene.coll…

AI 大模型的核心能力与应用场景全解析

深入理解 AI 大模型&#xff1a;核心能力与应用场景全解析 AI大模型是什么 通过概念考察的方式了解AI大模型&#xff0c;拆开来看。 AI领域术语丰富&#xff0c;涵盖模式识别、自然语言处理、神经网络、机器学习、深度学习、强化学习及人类反馈强化学习。大模型&#xff1a;把…

【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段

文章目录 【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段1 问题由来2 操作流程步骤1&#xff1a;打开代码片段定制页步骤2&#xff1a;在新标签页输入定制 XML步骤3&#xff1a;保存定义内容步骤4&#xff1a;功能测试 3 拓展 【工欲善其事】巧用 Sublime Text 生成带…

【笔记】信度检验

一、信度 信度是指测量结果的一致性和稳定性。 1.一致性&#xff08;Consistency&#xff09; 一致性指的是测量工具内部各个部分或项目之间的协调一致程度。高一致性意味着测量工具的不同部分都在测量同一个概念或特质。 例子&#xff1a;智力测试 假设我们有一个包含100…

ai智能论文生成系统有用吗?分享5款ai文献综述自动生成器

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术在学术写作领域的应用越来越广泛&#xff0c;尤其是在文献综述的自动生成方面。AI智能论文生成系统通过深度学习和自然语言处理技术&#xff0c;能够帮助研究人员快速生成高质量的文献综述&#xff0c;从而提高写作效…

YOLO v1详解解读

&#x1f680; 在此之前主要介绍了YOLO v5源码的安装和使用&#xff08;YOLO v5安装教程&#xff09;&#xff0c;接下来将探索YOLO的实现原理&#xff0c;作为一个金典的单阶段目标检测算法&#xff0c;应该深度的理解它的构建思想&#xff1b;所以本系列文章将从LOVO v1出发到…

力扣 简单 110.平衡二叉树

文章目录 题目介绍解法 题目介绍 解法 平衡二叉树:任意节点的左子树和右子树的高度之差的绝对值不超过 1 //利用递归方法自顶向下判断以每个节点为根节点的左右子树的最大深度是否大于1 class Solution {public boolean isBalanced(TreeNode root) {if(root null){return tr…

SpringBoot在线教育系统:从零到一的构建过程

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理微服务在线教育系统的相关信息成为必然。开…

html5 + css3(下)

目录 CSS基础基础认识体验cssCSS引入方式 基础选择器选择器-标签选择器-类选择器-id选择器-通配符 字体和文本样式1.1 字体大小1.2 字体粗细1.3 字体样式&#xff08;是否倾斜&#xff09;1.4 常见字体系列&#xff08;了解&#xff09;1.5 字体系列拓展-层叠性font复合属性文本…

上传本地项目到GitHub远程仓库(极简洁操作版)

第一步&#xff1a;在GitHub创建一个空的仓库 第二步&#xff1a;将仓库克隆&#xff08;下载&#xff09;到本地 第三步&#xff1a;将你要上传的所有文件放到这个克隆的仓库文件夹中 第四步&#xff1a;通过git add .将待上传文件添加到暂存区 此时&#xff0c;可以通过git …

网络基础 【HTTPS】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…

科普篇--- 什么是硬件在环测试?

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

千万不要运行!几个可以整蛊你朋友的Python程序!

Python 能做很多无聊&#xff0c;但有意思的事情&#xff0c;例如接下来的一些案例。以下程序&#xff0c;不要发代码&#xff0c;要不实现不了你整蛊的目的。 要打包成一个 exe 程序&#xff0c;发给朋友才有意思&#xff0c;使用 pip install pyinstaller。 打包命令如下&a…

Redission · 可重入锁(Reentrant Lock)

前言 Redisson是一个强大的分布式Java对象和服务库&#xff0c;专为简化在分布式环境中的Java开发而设计。通过Redisson&#xff0c;开发人员可以轻松地在分布式系统中共享数据、实现分布式锁、创建分布式对象&#xff0c;并处理各种分布式场景的挑战。 Redisson的设计灵感来…

【AI大模型】使用Embedding API

一、使用OpenAI API 目前GPT embedding mode有三种&#xff0c;性能如下所示&#xff1a; 模型每美元页数MTEB得分MIRACL得分text-embedding-3-large9,61554.964.6text-embedding-3-small62,50062.344.0text-embedding-ada-00212,50061.031.4 MTEB得分为embedding model分类…

快速上手C语言【上】(非常详细!!!)

目录 1. 基本数据类型 2. 变量 2.1 定义格式 和 命名规范 2.2 格式化输入和输出&#xff08;scanf 和 printf&#xff09; ​编辑 2.3 作用域和生命周期 3. 常量 4. 字符串转义字符注释 5. 操作符 5.1 双目操作符 5.1.1 算数操作符 5.1.2 移位操作符 5.1.3 位操作符…

【C/C++】错题记录(四)

题目一 一个函数可以有很多个返回值&#xff08;有很多个return语句&#xff09;&#xff0c;但是最终只能有一个return语句执行。 题目二 题目三 题目四 题目五 程序数据结构算法 题目六 题目七 题目八 题目九 D选项是语句……