使用Java8,Collection 接口有两个方法来生成流。
stream() -返回顺序流考虑集合作为其源。
parallelStream() - 返回并行数据流考虑集合作为其源
流/Stream是在JAVA8中引入的一个抽象,可以处理类似SQL语句声明数据
示例代码:
StreamTest.java
package com.tingcream.java8.stream; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * rt.jar java.util.stream 包 * @author jelly * */ public class StreamTest { public static void main(String[] args) { System.out.println("集合中去除空元素"); List<String> ss = Arrays.asList("abc", "", "bc", "efg", "abcd","", null,"jkl"); //List<String> list2= list.stream().filter(s-> !s.isEmpty()).collect(Collectors.toList()); List<String> ss2= ss.parallelStream().filter(s-> s!=null&&!s.isEmpty() ).collect(Collectors.toList()); System.out.println(ss);//原list没有改变 System.out.println(ss2); System.out.println("=================="); /* * stream() 返回一个流 * parallelStream() 返回一个并行流 * filter() 截取子集 * map() 将整个map中所有元素进行映射 * collect(Collectors.toList()); 最终返回一个list * distinct() 去重 * sorted() 指定排序规则 * limit() 排序后取几条数据 * max().get() 取最大值 * min().get() 取最小值 * count() 取元素数量 * * forEach() 对集合中元素进行遍历处理,无返回值 * * collect(Collectors.toList()) * collect(Collectors.toSet()) * collect(Collectors.toSet()) * collect(Collectors.toCollection()) * collect(Collectors.toMap()) * collect(Collectors.toMap()) * collect(Collectors.joining(", ")) * */ List<Integer> nums = Arrays.asList(3, 2, 2, 3, 7, 3, 5, 4); //get list of unique squares List<Integer> nums2 = nums.parallelStream().map( a-> a*a).distinct().collect(Collectors.toList()); List<Integer> nums3 = nums.parallelStream().map( a-> (a-2)*2).distinct().collect(Collectors.toList()); List<Integer> nums4 = nums.parallelStream().map( a-> (a-2)*2).distinct().sorted().limit(2).collect(Collectors.toList()); List<Integer> nums5 = nums.parallelStream().map( a-> (a-2)*2).distinct().sorted((a,b)->b-a).limit(2).collect(Collectors.toList()); Integer max= nums.parallelStream().map( a-> (a-2)*2).max((a,b)->a-b).get();//获取最大值 10 Integer min= nums.parallelStream().map( a-> (a-2)*2).min((a,b)->a-b).get();//获取最小值 0 long count = nums.parallelStream().map( a-> (a-2)*2).distinct().count();//获取集合元素数量 5 System.out.println(nums2); System.out.println(nums3); System.out.println(nums4); System.out.println(nums5); System.out.println(max); System.out.println(min); System.out.println(count); // nums.stream().map( a-> (a-2)*2).forEach(System.out::println); nums.stream().map( a-> (a-2)*2).forEach(a->System.out.print(a+",")); System.out.println(); //collect 收集器 String mergedString = ss.parallelStream().filter(s-> s!=null&&!s.isEmpty()).collect(Collectors.joining(", ")); System.out.println("Merged String: " + mergedString); } }
StreamTest2.java
package com.tingcream.java8.stream; import java.util.Arrays; import java.util.List; public class StreamTest2 { public static void main(String[] args) { List<Double> numbers = Arrays.asList(3d, 2d, 2d, 3d, 7d, 3d, 5d,4d,10d); /* DoubleSummaryStatistics stats = numbers.stream().mapToDouble(a->a).summaryStatistics(); double avg = stats.getAverage();//平均值 double max= stats.getMax(); //最大值 double min= stats.getMin();//最小值 double sum = stats.getSum();//总和 long count = stats.getCount();//数量 System.out.println("avg: "+avg); System.out.println("max: "+max); System.out.println("min: "+min); System.out.println("sum: "+sum); System.out.println("count: "+count);*/ /*boolean b= numbers.parallelStream().anyMatch(a-> a>5);// 任何一个元素匹配了,则立即返回true boolean b2= numbers.parallelStream().allMatch(a-> a>5);// 所有元素都匹配了,则返回true boolean b3= numbers.parallelStream().noneMatch(a-> a>5);// 所有元素都不匹配,则返回true System.out.println(b); System.out.println(b2);//false System.out.println(b3);//false */ double sum= numbers.parallelStream().mapToDouble(a->a).sum(); double avg= numbers.parallelStream().mapToDouble(a->a).average().getAsDouble(); long count =numbers.parallelStream().mapToDouble(a->a).distinct().count(); double max=numbers.parallelStream().mapToDouble(a->a).max().getAsDouble(); double min=numbers.parallelStream().mapToDouble(a->a).min().getAsDouble(); System.out.println("avg: "+avg); System.out.println("max: "+max); System.out.println("min: "+min); System.out.println("sum: "+sum); System.out.println("count: "+count); } }
上一篇:java8--方法引用
下一篇:java8--Optional类
Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1