JAVA利用Java8新特性 Stream来处理你的代码

前言

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

总结

用了这些是不是感觉自己代码变得很优雅,高大上的样子!

TAG: JAVA

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.itniuboke.com/article/22196.html