JAVA 8 STREAM 简单介绍

doMore 688 2019-10-09
  1. boolean allMatch(Predicate<? super T> predicate) 返回此流的所有元素是否与提供的匹配。

  2. boolean anyMatch(Predicate<? super T> predicate) 此流中元素只要有一个与提供的相匹配返回为true,否则为false。

  3. collect(Collector<? super T,A,R> collector)

1. static <T,A,R,RR> Collector<T,A,RR> collectingAndThen(Collector<T,A,R> downstream, Function<R,RR> finisher)
// 可以调整toList()收集器总是生成一个不可变的列表: 
// List<String> people = people.stream().collect(collectingAndThen(toList(), Collections::unmodifiableList));  
2. groupingBy(Function<? super T,? extends K> classifier);按照给定规则进行分组,如果需要并行,使用groupingByConcurrent(Function);
3. joining() 返回一个 Collector ,按照遇到的顺序将输入元素连接到一个 String中。 
4. mapping()收集器在多级别缩减时最为有用,例如groupingBy或partitioningBy 。 例如,给出一个Person的流,以累积每个城市中的一组姓氏: 
Map<City, Set<String>> lastNamesByCity = people.stream().collect(groupingBy(Person::getCity, mapping(Person::getLastName, toSet())));  
  1. Stream.concat(Stream<? extends T> a, Stream<? extends T> b) 创建一个连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。

  2. long count() 返回此流中的元素数。

  3. distinct() 返回由该流的不同元素(根据 Object.equals(Object) )组成的流。

  4. empty() 返回一个空的顺序 Stream 。

  5. filter(Predicate<? super T> predicate) 返回返回符合指定规则的元素流,(false被过滤)

List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("9");
list.stream().filter(x->"4".equals(x)).forEach(System.out::println); //  4
  1. flatMap(Function<? super T,? extends Stream<? extends R>> mapper) 该方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]

flatMap()只能展开一层数组。

// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
[1, 2, 3, 4].flatMap(x => [[x * 2]])
// [[2], [4], [6], [8]]

版权声明:(9)处参考CSDN博主「luoyu6」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luoyu6/article/details/96767891
  1. void forEach(Consumer<? super T> action) 对流中的每个元素执行操作,相当于for循环。
  2. void forEachOrdered(Consumer<? super T> action) 如果流具有定义的遇到顺序,则以流的遇到顺序对该流的每个元素执行操作。
  3. limit(long maxSize) 返回由此流的元素组成的流,截断长度不能超过 maxSize 。
  4. Stream map(Function<? super T,? extends R> mapper) 返回由给定函数对流中对象操作之后的结果流。
  5. Optional max(Comparator<? super T> comparator) 根据提供的 Comparator返回此流的最大元素。
  6. Optional min(Comparator<? super T> comparator) 根据提供的 Comparator返回此流的最小元素。
  7. noneMatch(Predicate<? super T> predicate) 流中没有与给定元素项目匹配时返回结果为true
		List<String> list = new ArrayList<>();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("9");
		System.out.println(list.stream().noneMatch(x -> "0".equals(x)));//true
  1. Stream.of(T... values) 返回其元素是指定值的顺序排序流。
  2. Stream.peek(Consumer<? super T> action) peek方法接收一个Consumer的入参。了解λ表达式的应该明白 Consumer的实现类 应该只有一个方法,该方法返回类型为void。 注意:peek接收一个没有返回值的λ表达式,可以做一些输出,外部处理等。map接收一个有返回值的λ表达式,之后Stream的泛型类型将转换为map参数λ表达式返回的类型
  3. Stream skip(long n) 在丢弃流的第一个 n元素后,返回由该流的元素组成的流。
  4. Stream sorted() 返回由此流的元素组成的流,根据自然顺序排序。
  5. Object[] toArray() 返回一个包含此流的元素的数组。