概念:
Stream是JDK1.8的新特性,方便操作集合,简化代码的API。
流程:
1、把集合转为Stream流
2、操作Stream流,(在管道中的中间操作和终止操作)
package com.zyj.demo.stream;
import java.util.*;
import java.util.stream.Collectors;
/**
*1.创建stream
*2.中间操作
*3.终止操作
*/
public class StreamApi {
public static void main(String[] args) {
//list添加数据
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("黑七");
list.add("黄八");
list.add("黄八");
System.out.println("准备初始集合:" + list);
//list.stream() 集合转为流
//collect 收集流的意思,Collectors.toList()将流转为list集合
/******************************************中间操作符**************************************************/
//list去重复数据 distinct去掉重复数据
List<String> collect = list.stream().distinct().collect(Collectors.toList());
System.out.println("去重后的结果:" + collect);
//找出包含王的数据 filter过滤条件元素
List<String> wang = list.stream().filter(str -> str.contains("王")).collect(Collectors.toList());
System.out.println("过滤后的结果:" + wang);
//limit取几个元素
List<String> jie = list.stream().limit(4).collect(Collectors.toList());
System.out.println("截取后的结果:" + jie);
//skip取几个元素
List<String> skips = list.stream().skip(4).collect(Collectors.toList());
System.out.println("截取后的结果:" + skips);
//map对流中的元素就行统一处理
List<String> mapper = list.stream().map(str -> str.concat("***")).collect(Collectors.toList());
System.out.println("拼接后的结果:"+ mapper);
/******************************************终止操作符**************************************************/
//集合中是否有一个元素满足条件
Boolean anyMatch = list.stream().anyMatch(str -> str.contains("张三"));
System.out.println("是否有一个元素满足条件:"+anyMatch);
//集合中所有元素都满足条件
Boolean allMatch = list.stream().allMatch(str -> str.length()>0);
System.out.println("集合中所有元素都满足条件:"+allMatch);
//集合中所有元素都不满足条件
Boolean noneMatch = list.stream().noneMatch(str -> str.length()>=2);
System.out.println("所有元素都不满足条件:"+noneMatch);
//返回集合中任意元素
Optional<String> anyies = list.stream().findAny();
System.out.println("返回集合中任意元素串行:"+anyies.get());
for (int i = 0; i <10 ; i++) {
Optional<String> any = list.parallelStream().findAny();
System.out.println("返回集合中任意元素并行:"+any);
}
//返回集合中第一个元素
Optional<String> findFirst = list.stream().findFirst();
System.out.println("返回集合中第一个元素:"+findFirst.get());
//循环
list.stream().forEach(str->System.out.println("循环输出"+str));
//将流中结果反复计算得到一个结果
Optional<String> reduce = list.stream().reduce((a, c) -> {
return a + c;
});
System.out.println("累加的结果:"+reduce.get());
//获取集合中元素的个数
long count = list.stream().count();
System.out.println("集合中元素的个数"+count);
}
}
版权声明:本文为weixin_43986108原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。