Java

Stream

2020-10-27  本文已影响0人  倚仗听江

假设此时要对以下的集合进行各种操作,Stream就可以极大的提高我们的效率。

public static final List<Integer> LIST = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  1. 获取指定数量的流
LIST.stream().limit(4).forEach(System.out::println);
  1. 通过设置的条件过滤出元素
LIST.stream().filter(x -> x > 1).forEach(System.out::println);
  1. 对流进行排序
new Random().ints().limit(10).sorted().forEach(System.out::println);
  1. 实现很多归约操作
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() && !string.contains("a")).collect(Collectors.joining(" "));
System.out.println("合并字符串: " + mergedString);
  1. 映射每个元素到对应的结果
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
// 获取对应的平方数(distinct()可以去重)
numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList()).forEach(System.out::println);
  1. 统计
IntSummaryStatistics stats = LIST.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());
  1. 排序
LIST.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);
  1. 接口终端操作
System.out.println(LIST.stream().anyMatch(x -> x == 1));
上一篇下一篇

猜你喜欢

热点阅读