IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java中的Stream流式计算的基本应用 -> 正文阅读

[Java知识库]java中的Stream流式计算的基本应用

1 概述

  • java.util.stream.Stream 接口,表示能应用在一组元素上,一次执行的操作序列,也就是可以对一组数据进行连续的多次操作。
  • Stream在使用的时候,需要指定一个数据源,比如 java.util.Collection 的子类, List 或者 Set都可以,但是 Map 类型的集合不支持。
  • Stream是对集合功能的增强,它提供了各种非常便利、高效的聚合操作,可以大批量数据操作,同时再结合Lambda表达式,就可以极大的提高编程效率。

Stream操作分为中间操作或者最终操作两种:

  1. 中间操作,返回Stream本身,这样就可以将多个操作依次串起来
    例如, map、flatMap、filter、distinct、sorted、peek、limit、skip、parallel、 sequential、unordered
  2. 最终操作,返回一特定类型的计算结果
    例如, forEach、forEachOrdered、toArray、reduce、collect、min、max、count、 anyMatch、allMatch、noneMatch、findFirst、findAny、iterator
public class Test { 
	public static void main(String[] args) { 
		List<Integer> list = new ArrayList<>(); 
		Collections.addAll(list,1,2,3,4,5,6,7,8,9,10); 
		list = list.stream() //把集合list变为stream 
				   .filter(e->e%2==0) //过滤,保留偶数 
					.sorted((e1,e2)->e2-e1) //排序,倒序 
					.collect(Collectors.toList()); //结果收集到一个新的List集合 中并返回 
					System.out.println(list);
			 	} 
			}
			//运行结果: [10, 8, 6, 4, 2]

值转stream

在这里插入图片描述

数组转stream

在这里插入图片描述

集合转stream

在这里插入图片描述

1.注意,只要是Collection类型的集合,都可以调用stream()方法,将集合转换为Stream对象,而map不是Collection的子类,所以不能调用stream()方法

stream转数组

在这里插入图片描述

stream转集合

public class Test { 
	public static void main(String[] args) { 
		Stream<String> stream = Stream.of("hello","world","briup"); 
		List<String> list1 = stream.collect(Collectors.toList()); 
		//List<String> list2 = stream.collect(Collectors.toCollection(ArrayList::new)); 
		//Set<String> set3 = stream.collect(Collectors.toSet()); 
		//Set<String> set4 = stream.collect(Collectors.toCollection(HashSet::new)); 
	} 
}

1. 注意,一个Stream在代码中,只能使用一次,再次使用就会报错
2. 多次使用一个Stream对象,就会抛出以下异常:
java.lang.IllegalStateException: stream has already been operated upon or closed

stream转字符串

在这里插入图片描述

最终操作

1.iterator , 返回迭代器对象

在这里插入图片描述

2. forEach ,将调Stream中的每个元素,交给一个Consumer函数处理

在这里插入图片描述

3. count : 统计流中的元素数,并返回结果

在这里插入图片描述

4. max : 返回流中基于comparator所指定的比较规则,比较出的最大值

在这里插入图片描述

5. min ,返回流中基于comparator所指定的比较规则,比较出的最小值

在这里插入图片描述

6. toArray : 使用调用流中的元素,生成数组返回。

在这里插入图片描述

7. collect ,将元素收集到一个可以修改的容器中,并返回该容器

在这里插入图片描述
在这里插入图片描述

8. Match ,匹配操作,Stream中提供了多种匹配模式

在这里插入图片描述

9. findFirst ,返回 Stream的第一个元素

在这里插入图片描述

中间操作

1. filter , 过滤方法,返回满足predicate指定的条件的所有元素的一个新流

在这里插入图片描述

2. map , 对调用流中的元素,应用Function所指定的操作,然后返回一个新流

在这里插入图片描述
map生成的是个1:1映射,每个输入元素,都按照规则转换成为另外一个元素

在这里插入图片描述

3. sorted , 排序

在这里插入图片描述
在这里插入图片描述

4. limit ,返回 Stream 的前面 n 个元素

在这里插入图片描述

5. skip , 跳过前 n 个元素只要后面的元素

在这里插入图片描述

6. distinct ,去除重复数据

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:04:30  更:2021-10-06 12:06:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:00:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码