JDK8 Stream 详细使用

JDK8 管道 Stream 详细使用介绍

 

Stream 的获取

① 通过集合Collection获取

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5));
Stream<Integer> stream = list.stream();

② 通过数组获取

String[] array = {"are","you","ok"};
Stream<String> stream = Arrays.stream(array);
//对于基本类型数组的处理
int[] array = {1,2,3,4,5};
Stream<Integer> stream = Arrays.stream(array).boxed();    
//Arrays.stream(array)获取的是一个IntStream对象,boxed 方法用于将目前 Stream 中的基本类型装箱

③ 直接通过值获取

Stream<String> stream = Stream.of("are","you","ok");

 


Stream 常用管道操作

1) 筛选 filter

filter函数接收一个Lambda表达式作为参数,该表达式返回 boolean,在执行过程中,流将元素逐一输送给filter,并筛选出执行结果为 true 的元素;

//筛选出列表中的非空项
List<String> list = Arrays.asList("are","you","","ok");
List<String> filted = list.stream()
                      .filter(x-> !x.empty())
                      .collect(Collectors.toList());

2) 去重 distinct

//去除列表中的重复元素
List<String> list = Arrays.asList("are","you","you","ok");
List<String> distincted = list.stream()
                          .distinct()
                          .collect(Collectors.toList());

3) 截取 limit

截取流的前N个元素:

//获取Stream的前3个值
List<String> list = Arrays.asList("are","you","fucking","ok");
List<String> distincted = list.stream()
                          .limit(3);
                          .collect(Collectors.toList());

4) 跳过 skip

跳过流的前n个元素:

List<String> list = Arrays.asList("are","you","fucking","ok");
List<String> distincted = list.stream()
                          .skip(2);
                          .collect(Collectors.toList());

5) 映射 map

对流中的每个元素执行一个函数,使得元素转换成另一种类型输出。流会将每一个元素输送给map函数,并执行map中的Lambda表达式,最后将执行结果存入一个新的流中。 
如:将 list 中每一个 Integer类型元素自增后转化为 String类型

/
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值