Stream流
生成方式
- 生成流
- 通过数据源(集合,数组等)生成流
- list.stream()
- 中间操作
- 一个流后面可以跟随零个或多个中间操作,其主要是打开流,做出某种程度的数据过滤/映射,然后返回一个新的流,交给下一个操作使用
- filter()
- 终结操作
- 一个流只能有一个终结操作,当这个操作执行后,无法再被操作
- forEach()
常见生成方式
Collection体系的集合可以使用默认方法stream()生成流
default Stream
stream() ```java
StreamsetStream = set.stream(); - Map体系的集合间接的生成流 - ```java Map<String,Integer> map = new HashMap<>(); Stream<String> keyStream = map.keySet().stream(); Stream<Integer> valueStream = map.values().stream(); Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream();
数组可以通过Stream接口的静态方法of(T…values)生成流
String[] strArray = {"hello","world","java"}; Stream<String> strArrayStream = Stream.of(strArray); Stream<String> strArrayStream2 = Stream.of("hello","world","java"); Stream<Integer> intStream = Stream.of(10,20,30);
常见中间操作方法
- Stream
filter(Predicate predicate):用于对流中的数据进行过滤 - Predicate接口中的方法 boolean test(T t):对给定的参数进行判断,返回一个布尔值
- Stream
limit(long maxSize):返回此流中的元素组成的流,截取前指定参数个数的数据 - Stream
skip(long n):跳过指定参数个数的数据,返回由该流的剩余元素组成的流 - static
Stream concat(Stream a,Stream b):合并a和b两个流为一个流 - Stream
distinct():返回由该流的不同元素(根据Object.equals(Object))组成的流 - Stream
sorted(Comparator comparator):返回由该流的元素组成的流,根据提供的Comparator进行排序,默认自然排序 Stream map(Function mapper):返回由给定函数应用于此流的元素的结果组成的流 - Function接口的方法 R apply(T t)
- IntStream mapToInt(ToIntFunction mapper):返回一个IntStream其中包含将给定函数应用于此流的元素的结果
- IntStream:表示原始int流
- ToIntFunction接口中的方法 int applyAsInt(T value)
常见终结操作方法
- void forEach(Consumer action) :对此流的每个元素执行操作
- Consumer接口中的方法 void accept(T t):对给定的参数执行此操作
- long count():返此流中的元素数
Stream流收集操作
对数据使用Stream流的操作完毕后,数据收集到集合中
- R collect(Collector collector)
- 该收集方法参数是一个Collector接口
工具类Collector提供了具体的收集方式
- publc static
Collector toList():把元素收集到List集合中 - publc static
Collector toSet():把元素收集到Set集合中 - publc static Collector toMap(Function keyMapper,Function valueMapper):把元素收集到Map集合中
可以留下你的信息哦(去Github_issues)😀😀😀
GitHub Issues