【java技术总结】java-8新特性:stream实例
1.获取一列数的平方,并从小到大、从大到小排序,转化为List
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
//大到小
List<Integer> list = numbers.stream()
.map(i -> i * i)
.sorted((x, y) -> y - x)
.collect(Collectors.toList());
//小到大
List<Integer> list1 = numbers.stream()
.map(i -> i * i)
.sorted()
.collect(Collectors.toList());
[49, 25, 9, 9, 9, 4, 4]
[4, 4, 9, 9, 9, 25, 49]
2.List转对应Map
List<String> strList = Arrays.asList("a", "ba", "bb", "abc", "cbb", "bba", "cab");
Map<Integer,String> map = strList.stream().collect(Collectors.toMap(s -> strList.indexOf(s), s -> s));
{0:a,1:ba,2:bb,3:abc,4:cbb,5:bba}
3.统计结果的收集器,它们主要用于int、double、long等基本类型上,它们可以用来产生类似如下的统计结果。
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());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
列表中最大的数 : 7
列表中最小的数 : 2
所有数之和 : 25
平均数 : 3.5714285714285716
4.合并字符串
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);
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
System.out.println("合并字符串: " + mergedString);
筛选列表: [abc, bc, efg, abcd, jkl]
合并字符串: abc, bc, efg, abcd, jkl
5.List筛选处理转List
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
// 获取空字符串的数量
List<String> collect = strings.parallelStream() //并行流
.filter(string -> !string.isEmpty()) //过滤空字符串,符合通过
.sorted() //排序
.map(String::toUpperCase) //转大写
.distinct() //去重
.limit(2) //限制2个
.collect(Collectors.toList());
作者:blanset
出处:https://www.cnblogs.com/blanset/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号