Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。
创建流的几种方法
String[] dd = {"aa","bb","cc"};
Arrays.stream(dd).forEach(System.out::println);
System.out.println("=================");
Stream.of(dd).forEach(System.out::println);
System.out.println("=================");
Arrays.asList(dd).stream().forEach(System.out::println);
System.out.println("=================");
Stream.iterate(0,x -> x + 1).limit(5).forEach(System.out::println);
System.out.println("=================");
Stream.generate(() -> "x").limit(5).forEach(System.out::print);
System.out.println("=================");
// 输出结果
aa
bb
cc
=================
aa
bb
cc
=================
aa
bb
cc
=================
0
1
2
3
4
=================
xxxxx
Stream流的方法可分为 中间操作 和 终端操作 两种类型
中间类型:意思就是可以连续的操作;
终端操作:结束这一串方法链的操作;
Stream中间操作的方法
/**
* filter 操作
* 判断 dd 数组中是否有 "aa" 元素,有的话继续下一步;
* 没有的话则不继续。
*/
System.out.println("filter操作:");
Arrays.stream(dd).filter(str -> "aa".equals(str)).forEach(System.out::println);
/**
* map操作
* 可以改变返回的类型:
* Integer类型的数据 返回 String类型的数据。
*/
Integer[] i = {1,2,3};
System.out.println("map操作:");
Arrays.stream(i).map(ii -> Integer.toString(ii)).forEach(ii -> {
System.out.print(ii);
System.out.print(ii.getClass());
});
/**
* flatMap操作
* 把两个流变为一个流
*/
System.out.println();
System.out.println("flatMap操作:");
String[] ee = {"aa","bb","cc"};
// 不使用flatMap示例,返回的结果是 Stream<String[]> 数组流;
// 数组流使用forEach来输出的话,不是输出的我们想要的结果,而是Ljava.lang.String;@34c45dca;
Arrays.stream(ee).map(str -> str.split("")).forEach(System.out::println);
// 使用flatMap来将map返回的Stream<String[]> 数组流 合并为Stream<String>流;
// 这样forEach就可以返回我们想要结果了。
Arrays.stream(ee).map(str -> str.split("")).flatMap(Arrays::stream).forEach(System.out::println);
还没有写完。。。
参考:https://blog.csdn.net/qq_28410283/article/details/80634725
网友评论