Stream流学习1
这块我也还不熟悉,请带思考阅读.
1.流介绍
2.流的创建
3.流的使用
3.1筛选与切片
3.1.1 stream().filter() 元素过滤
3.1.2 stream().limit() 获取指定的个数
3.1.3 stream().skip() 跳过指定个元素
3.1.4 stream().distinct() 元素去重
// stream0_2.forEach(System.out::println); 这是结束流的操作
// 如使用下面的3号流 输出stream0_1或者stream0_2后前面的流就不能再在下方使用了.
/*1.筛选与切片*/
//过滤 取多少个 跳过几个 去重
Stream<Integer> stream0 = Stream.of(6, 4, 6, 7, 3, 9, 8, 10, 12, 14, 14);
//filter() 过滤 eg:大于5的元素
Stream<Integer> stream0_1 = stream0.filter(e -> e>=8);
// stream0_1.forEach(System.out::println); //9 8 10 12 14 14
//limit(n) 获取n个元素
Stream<Integer> stream0_2 = stream0_1.limit(5);
// stream0_2.forEach(System.out::println); //9 8 10 12 14
//skip(n) 跳过n元素,配合limit(n)可实现分页
Stream<Integer> stream0_3 = stream0_2.skip(1);
// stream0_3.forEach(System.out::println); //8 10 12 14
//distinct() 通过流中元素的 hashCode() 和 equals() 去除重复元素
Stream<Integer> stream0_4 = stream0_3.distinct();
// stream0_4.forEach(System.out::println); //8 10 12 14
//整合下 数组中取3个不重复且大于5的元素
// 6 6 7 去重了6 所以为6 7
Stream<Integer> stream0_5 = Stream.of(6, 4, 6, 7, 3, 9, 8, 10, 12, 14, 14).filter(e -> e>5).limit(3).distinct();
stream0_5.forEach(System.out::println);
3.2 映射
3.2.1 stream().map() 应用方法到每一个元素上,并将其映射成一个新的元素.
/* 2.映射*/
//两个元素的数组
List<String> strList = Arrays.asList("1,2,3", "a,b,c");
// strList.forEach(System.out::println);
//stream().map() 函数e.replace(",", "")会被应用到e上,并将其映射成一个新的元素。
Stream<String> stream1 = strList.stream().map(e -> e.replace(",", ""));
stream1.forEach(System.out::println);
3.2.2 stream().flatMap() 将流中的元素都替换成一个新的流
结果
123
abc
//stream().flatMap() 流中的每个值都换成另一个流,然后把所有流连接成一个流。
// e->{ 方法内需要返回一个流 }
Stream<String> stream1_1 = strList.stream().e -> {
String[] split = e.split(",");
Stream<String> tempStream = Arrays.stream(split);
return tempStream;
});
stream1_1.forEach(System.out::print);
结果
123abc