# Stream 流概述

Stream 流把真正的函数式编程引入 Java 中

# Stream 流的生成

生成流:通过数据源(集合,数组等)生成流

# stream()

Collection 体系的集合可以使用默认方法 stream () 生成流: default Stream <E> stream()

List<String> list = new ArrayList<String>();
Stream<String> listStream = list.Stream();
Set<String> set = new HashSet<>();
Stream<String> setStream = set.stream();

# 间接生成

Map 体系的集合间接的生成流

Map<Integer,String> map = new HashMap<>();
Stream<Integer> keyStream = map.keySet().stream();
Stream<String> valueStream = map.values().stream();

# 静态方法

数组可以通过 Stream 接口的静态方法 of (T...values) 生成流

int[] arr = {1,2,3};
Stream<int[]> arrStream = Stream.of(arr);

# Stream 流的中间操作

中间操作:打开流,做数据过滤 / 映射,返回一个新的流,交给下一个操作使用

  1. filter(Predicate predicate) :过滤流
    1. boolean test(T t) :Predicate 接口的方法
  2. limit(long maxSize) :截取流的前半部分
  3. skip(long n) :跳过前 n 个流
  4. comcat(Stream a, Stream b) :合并 ab 流
  5. distinct() :过滤相同元素
  6. sort() :自然排序
  7. sort(Comparator com) :指定排序
  8. map(Function mapper) :返回指定结果流
    1. list.stream().map(Integer::parseInt).forEach(System.out::println);
  9. mapToInt(Function mapper) :返回函数结果的 IntStream
    1. sum() :流中元素的和

# Stream 流的终结操作

终结操作:一个流只能有一个终结操作,终结后,流无法再被操作

  1. forEach(Function action) :对每个流操作
  2. long count() :流中元素数

# Stream 流的收集操作

R collect(Collector collector) :收集了流中数据

  1. Collector 接口
  2. 工具类 Collectors 返回 Collector
    1. toMap()
    2. toSet()
    3. toList(Function f1, Function f2)
list<String> list = listStream.collect(Collectors.toList());
Set<String> set = setStream.collect(Collectors.toSet());
Map(String, String) map = mapStream.collect(Collectors.toMap(s -> s.spilt(":")[0],s -> s.split(":")[1]));
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Baozi 微信支付

微信支付

Baozi 支付宝

支付宝

Baozi 微信

微信