【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号