Stream流的中间与终止操作(collect, map, filter, flatMap,max 、min)简单整理
部分整理如下代码块,
@Test
public void DemoStream() {
String stringGather[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
System.out.println("!****************终止操作(collect):转元素********************!");
System.out.println("取 Stream 中每个字符串并放入一个新的列表");
List<String> streamList = Stream.of(stringGather).collect(Collectors.toList());
for (String s : streamList) {
System.out.println("通过stream转换新的集合元素分别是:" + s);
}
streamList.forEach(System.out::println);
System.out.println("!******************中间操作(map ):变大写******************!");
System.out.println("将一种类型的值映射为另一种类型的值,可以将 Stream 中的每个值都映射为一个新的值,最终转换为一个新的 Stream 流");
List<String> streamUpcase = Stream.of(stringGather).map(
test -> test.toUpperCase()
).collect(Collectors.toList());
streamUpcase.forEach(System.out::println);
System.out.println("!******************中间操作(filter ): ******************!");
System.out.println("遍历并筛选出满足条件的元素形成一个新的 Stream 流。");
List<String> list = Arrays.asList("java", "react", "angular", "javascript", "vue");
long count = list.stream().filter(p -> p.startsWith("j")).count();
System.out.println(count);
System.out.println("!******************中间操作(flatMap ): ******************!");
System.out.println("将两个集合 合并为一个");
List<String> listMerge = Stream.of(Arrays.asList("1", "2", "3"), Arrays.asList("吃", "饼", "干"))
.flatMap(test -> test.stream()).collect(Collectors.toList());
listMerge.forEach(System.out::println);
System.out.println("!****************** 终止操作(max 、min ): ******************!");
System.out.println("求 Stream 中的最大值、最小值以元素长度为依据");
Optional<String> maxValue = Stream.of(stringGather).max((ao, bo) -> Integer.compare(ao.length(), bo.length()));
System.out.println("最大值为:" + maxValue);
System.out.println("!****************** 终止操作(reduce ): ******************!");
System.out.println("从 Stream 的一组值中生成另一个值。");
int counts = Stream.of(1, 2, 3, 4, 5).reduce(0 ,(addValue, value) -> (addValue + value));
System.out.println("累计和为:" + counts);
}