Stream

作者: 倚仗听江 | 来源:发表于2020-10-27 09:42 被阅读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. 接口终端操作
  • count方法,跟List接口的size一样,返回的都是这个集合流的元素的长度
  • anyMatch表示,判断的条件里,任意一个元素成功,返回true
  • allMatch表示,判断条件里的元素,所有的都是,返回true
  • noneMatch跟allMatch相反,判断条件里的元素,所有的都不是,返回true
System.out.println(LIST.stream().anyMatch(x -> x == 1));

相关文章

网友评论

    本文标题:Stream

    本文链接:https://www.haomeiwen.com/subject/tbutvktx.html