Stream的常用方法
1.1、延迟方法&终结方法
• 延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方 法均为延迟方法。)
• 终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似 StringBuilder 那样的链式调 用。本小节中,终结方法包括 count 和 forEach 方法。
1.2、常用的方法
private static void methodStream() {
Stream<String> stream1 = Stream.of("aa", "bb", "cc", "dd");
Stream<String> stream2 = stream1.filter(name -> name.startsWith("a"));
stream2.forEach(s -> System.out.println(s));
Stream<String> stream3 = Stream.of("1", "2", "3", "4");
Stream<Integer> stream4 = stream3.map(s -> Integer.parseInt(s));
stream4.forEach(i -> System.out.println(i));
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Stream<Integer> stream5 = list.stream();
System.out.println(stream5.count());
String[] arr = {"a", "b", "c", "d"};
Stream<String> stream6 = Stream.of(arr);
Stream<String> stream7 = stream6.limit(2);
stream7.forEach(s -> System.out.println(s));
Stream<String> stream8 = Stream.of("aa", "bb", "cc", "dd");
Stream<String> stream9 = stream8.skip(1);
Stream<String> stream10 = Stream.of("aa");
Stream<String> stream11 = Stream.concat(stream9, stream10);
stream11.forEach(s -> System.out.println(s));
}
1.3、注意事项
• Stream流属于管道流只能被消费一次
第一个Stream流调用完毕方法,数据会流转到下一个Stream流上,而这时第一个Stream流已经使用完毕就会关闭了,所以第一个Stream流就不能再调用方法了