Stream流
一、Stream流的生成方式
-
Collection体系的集合可以使用默认方法stream()生成流
- default Stream<E> stream()
List<String> list = new ArrayList<>(); Stream<String> listStream = list.stream(); Set<String> set = ne HashSet<>(); Stream<String> setStream = set.stream();
-
Map体系的集合间接的生成流
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> str1 = Stream.of(strArray); Stream<Integer> str2 = Stream.of(10, 20, 30);
二、Stream流常见中间方法
方法 | 作用 |
---|---|
Stream<T> filter(Predicate predivate) | 用于对流中的数据进行过滤 |
Stream<T> limit(long maxSize) | 返回此流中的元素组成的流,截取前指定参数个数的数据 |
Stream<T> skip(long n) | 跳过指定参数个数的数据,返回由该流的剩余元素组成的流 |
static <T> Stream<T> concat(Stream a, Stream b) | 合并a和b两个流为一个流 |
Stream<T> distinict() | 返回由该流不同的元素(equals())组成的流 |
Stream<T> sorted() | 返回由此流的元素组成的流,根据自然顺序排序 |
Stream<T> sorted(Comparator comparator) | 返回由该元素组成的流,根据提供的Comparator进行排序 |
<R> Stream<R> map(Function mapper) | 返回由给定函数应用于此流的元素的结果组成的流 |
IntStream mapToInt(ToIntFunction mapper) | 返回一个IntStream其中包含将给定函数应用于此流的元素的结果 |
三、Stream流常见终结操作方法
方法 | 作用 |
---|---|
void forEach(Consumer action) | 对此流的每个元素执行操作 |
long count() | 返回此流中的元素数 |
四、Stream流的收据操作
1.收集方法
- R collect(Collector collector)
- 但是这个收集方法的参数是一个Collector接口
2.工具类Collectors
- public static <T> Collector toList():把元素收集到List集合
- public static <T> COllector toSet():把元素收集到Set集合
- public static Collector toMap(Fuction keyMapper, Fuction valueMapper):把元素收集到Map集合