Stream流


Stream流

1. 体验Stream流

arrayList.stream().filter(s -> s.startWith("张")).filter(s -> s.length() == 3).forEach(System.out::println);

2. Stream流的生成方式

1.

  1. 生成流
    • 通过数据源(数组,集合)生成流
      • 例:list.Stream()
  2. 中间操作
    • 一个流后可跟有零或多个中间操作,主要目的是打开流,做出某种程度的数据过滤 / 映射,然后返回一个新的流,交给下一个操作使用
  3. 终结操作
    • 一个流只能有一个终结操作,当这个操作执行后,流就被使用”光”了,无法再被操作。
      • 例:forEach()

2. Stream常见生成方式

  1. Collection体系的集合可以使用默认方法Stream()生成流
    • default Stream< E > stream
  2. Map体系的集合间生成流 (调用方法:keySet(), values(), entrySet() )
  3. 数组可以通过Stream接口的静态方法 of (T…values)生成流 (Stream.of(数组))

3. Stream流常见中间操作方法

1. Stream<T> filter(Predicate predicate) : 用于流中数据的过滤
	predicate接口的方法					boolean test(T t): 进行判断,返回一个boolean2. Stream<T> limit(long maxSize) : 截取指定参数个数的数据,返回此流中元素组成的流
3. Stream<T> skip(long n) : 跳过指定参数个数的数据,返回由该流剩余元素组成的流
4. static<T> Stream concat(Stream a, Stream b) : 合并a和b两个流为一个流  (静态方法)
5. stream<T>  distict() : 返回由该流不同元素(根据Object.equals(Object)) 组成的流
6. Stream<T> sorted() : 根据自然顺序排序,返回由此流元素组成的流
7. Stream<T> sorted(Comparator comparator) : 根据提供的Comparator进行排序,返回由此流元素组成的流
8. Stream<T> sorted(Comparator comparator) : 返回由给定函数应用于此流的元素结果组成的流
	Function接口中的方法						R apply(T t)
		例子:list.stream().map(s -> Integer.valueOf(S)).forEach(System.out::println);
9. IntStream mapToInt(ToIntFunction mapper) : 返回一个IntStream其中包含  将给定函数应用于此流的结果

4. Stream流常见的终结操作方法

1. void forEach(Consumer action) : 对此流的每个元素进行操作
			Consumer接口的方法		void accept(T t) : 对给定的参数操作
2. long count() : 返回此流中的元素数

5. Stream的收集操作

  1. Stream流的收集方法

    • R collect(Collect collector)
      • 但这个收集方法的参数是一个Collector接口
  2. 工具类Collector 提供了具体的收集方法

    public static <T> Collector toList() : 把元素收集到List集合中
    public static <T> Collector toSet()  : 把元素收集到Set集合中
    public static Collector toMap(Function keyMapper, Function valueMapper) : 把元素收集到Map集合中

文章作者: han yue
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 han yue !
评论
  目录