前言 |
Java8的API中添加了一个新的特性: 流,即stream。stream是将数组或者集合的元素视为流,流在管道中流动过程中,对数据进行筛选、排序和其他操作。因为流申明式处理数据集合的特点,可以让代码变得简洁易读
filter |
过滤出list中不是空的
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream()
.filter(string -> !string.isEmpty())
.collect(Collectors.toList());
System.out.println(filtered);
// [abc, bc, efg, abcd, jkl]
forEach |
循环输出list中不为空的所有数据
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
filtered.forEach(System.out::println);
/*
abc
bc
efg
abcd
jkl
*/
map |
过滤出list中不为空的数据,然后让他们自身加上自身,并循环打印出来
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
List<String> squaresList = filtered.stream().map( i -> i+i).distinct().collect(Collectors.toList());
squaresList.forEach(System.out::println);
/*
abcabc
bcbc
efgefg
abcdabcd
jkljkl
*/
Collectors |
在list的每个元素之间加上三个逗号,并把list转为string
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(",,, "));
System.out.println(mergedString);
// abc,,, bc,,, efg,,, abcd,,, jkl
summaryStatistics |
统计list中最大数,最小数,所有数值和,平均数
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("列表中最大的数 : " + stats.getMax()); // 列表中最大的数 : 7
System.out.println("列表中最小的数 : " + stats.getMin()); // 列表中最小的数 : 2
System.out.println("所有数之和 : " + stats.getSum()); // 所有数之和 : 25
System.out.println("平均数 : " + stats.getAverage()); // 平均数 : 3.5714285714285716
总结 |
用了这些是不是感觉自己代码变得很优雅,高大上的样子!
转载:https://blog.csdn.net/ywq1016243402/article/details/101695981
查看评论