Stream流(Java)

目录

一、介绍

二、Stream流的使用步骤

三、Stream流常见的中间方法

四、Stream流常见的终结方法


一、介绍

Stream也叫Stream流,是JDK8开始新增的一套API,可以用于操作集合或者数组的数据。

优势:Stream流大量的结合了Lambda的语法风格来编程,提供了更加简单的方式操作集合或者数组中的数据,代码更简洁。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;public class Test1 {public static void main(String[] args) {List<String> names = new ArrayList<>();Collections.addAll(names,"何柳柳","张大大","张丹","李四","张溜溜");System.out.println(names);//找出姓张,且是三个字的名字,存入到一个新集合//1.老方法List<String> list = new ArrayList<>();for(String s : names){if(s.startsWith("张")&& s.length() ==3){list.add(s);}}System.out.println(list);//2.使用Stream流List<String> list2 = names.stream().filter(s -> s.startsWith("张")).filter(s -> s.length()==3).collect(Collectors.toList());System.out.println(list2);}
}

二、Stream流的使用步骤

1.获得数据源,通过数据源获取Stream流,与数据源建立连接

2.调用流水线的各种方法对数据进行处理、计算。

3.获取处理的结果,对结果进行遍历、统计、收集到一个新集合中返回

获取集合的stream流:stream()

获取数组的stream流:

1.stream(T[] array)获取当前数组的stream流

 2.of(T ... values)获取当前接收数据的stream流

import java.util.*;
import java.util.stream.Stream;public class Test2 {public static void main(String[] args) {//1.获取List集合的Stream流List<String> names = new ArrayList<>();Collections.addAll(names,"张三","李四","王五");Stream<String> stream = names.stream();//2.Set集合获取Stream流Set<String> set = new HashSet<>();Collections.addAll(set,"张曼玉","阿三哥","孙悟空");Stream<String> stream1 = set.stream();stream1.filter(s -> s.contains("张")).forEach(s->System.out.println(s));//3.Map集合获取Stream流Map<String,Double> mp = new HashMap<>();Set<String> ks = mp.keySet();Collection<Double> values = mp.values();Stream<Double> vs = values.stream(); //此法可以对值处理Set<Map.Entry<String,Double>> entries = mp.entrySet();Stream<Map.Entry<String,Double>> kvs = entries.stream();kvs.filter(e -> e.getKey().contains("")); //此法可对键值对处理//4.数组获取Stream流String[] name2 = {"1","2","3"};Stream<String> s1 = Arrays.stream(name2);Stream<String> s2 = Stream.of(name2);}
}

三、Stream流常见的中间方法

中间方法是指调用完成后会返回新的Stream流,可以继续使用(支持链式编程)

图片来自itheima:

distinct去重复,自定义类型对象要希望内容一样就重复的话,需要重写hashCode和equals

 

四、Stream流常见的终结方法

 终结方法指的是调用完成后,不会返回新Stream了,没法继续使用流了。

 收集Stream流:把stream流操作后的结果转回到集合或数组中去返回:

流只能收集一次。

 

变成Map的时候如果有重复需要.distinct()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511098.html

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

相关文章

基于springboot+vue的球队训练信息管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的按键扫描、数码管显示按键值、显示按键LED应用

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的按键扫描、数码管显示按键值、显示按键LED应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍TM1638键盘…

Jenkins设置使用163邮箱发送邮件

目录 一、下载需要的插件 二、开通163邮箱的SMTP服务 三、配置邮箱&#xff0c;测试发送 1、配置Jenkins Location 2、配置Extended E-mail Notification 扩展邮件通知 3、配置默认触发器&#xff08;可先不配置&#xff09; ​编辑 4、配置默认的邮件通知 5、测试邮箱…

华为---MSTP(一)---MSTP生成树协议

目录 1. MSTP技术产生背景 2. STP/RSTP的缺陷 ​编辑 2.1 无法均衡流量负载 2.2 数据使用次优路径 3. MSTP生成树协议 3.1 MSTP相关概念 3.2 MSTP树生成的形成过程 4. MSTP报文 1. MSTP技术产生背景 RSTP在STP基础上进行了改进&#xff0c;实现了网络拓扑快速收敛。但…

NLP_文本张量表示方法_2(代码示例)

目标 了解什么是文本张量表示及其作用.文本张量表示的几种方法及其实现. 1 文本张量表示 将一段文本使用张量进行表示&#xff0c;其中一般将词汇为表示成向量&#xff0c;称作词向量&#xff0c;再由各个词向量按顺序组成矩阵形成文本表示. ["人生", "该&q…

TCPDump 使用教程

每次服务器网络不通的时候&#xff0c;总会听到一个声音&#xff0c;你去抓包啊&#xff0c;那这里就来介绍下TCPDump&#xff0c;一款强大的网络分析工具&#xff0c;可以捕获网络上的数据包&#xff0c;并进行分析。这款工具在网络管理员和安全专家中非常受欢迎。 一、安装 …

Java解决杨辉三角

Java解决杨辉三角 01 题目 给定一个非负整数 *numRows&#xff0c;*生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRo…

不同控制方式下的无人机二维码识别降落对比

无人机技术的快速发展正在推动众多行业的革新&#xff0c;从农业监测、灾害响应到城市规划和物流配送&#xff0c;无人机的应用前景无限广阔。随着应用场景的多样化&#xff0c;无人机精准降落成为一大挑战。基于PX4飞控固件和ROS系统的开源自主无人机平台Prometheus应运而生。…

15-注册中心-自研微服务框架

注册中心 前面我们实现了RPC&#xff0c;但是大家知道服务都是集群化部署的&#xff0c;那么客户端在连接服务端的时候&#xff0c;到底该选择哪一个服务器呢&#xff1f; 这时候我们就需要注册中心的帮助了。 1. nacos 1.1 注册服务 package registerimport ("github.c…

如何用Elementor创建WordPress会员网站

在下面的文章中&#xff0c;我们将向您展示如何使用Elementor和MemberPress在WordPress中轻松构建会员网站。这篇文章将涵盖WordPress会员网站设置过程、会员资格和受保护内容创建、重要页面和登录表单设计、电子邮件通知管理、报告等。 目录 什么是WordPress会员网站&#x…

「滚雪球学Java」:JDBC(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

【AI视野·今日NLP 自然语言处理论文速览 第八十期】Fri, 1 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 1 Mar 2024 Totally 67 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Loose LIPS Sink Ships: Asking Questions in Battleship with Language-Informed Program Sampling Authors G…