Stream 流
-
类似于生活中的生产流水线;
-
专门负责加工数据的;
-
特点:
- 只有容器能够获取流对象;
- 流只负责处理数据,不负责存储数据;
- 每条流,只能使用一次,是一次性的;
- 只能往前走,不能回退;
-
获取流的方式:
-
单列集合:
- Stream list_stream = list.stream();
- Stream set_stream = set.stream();
-
双列集合:
- Stream set_stream = map.keySet().stream();
- Stream entry_stream = map.entrySet().stream();
-
数组:
- Stream s = Stream.of(1,2,3,4);
- Stream stream = Arrays.stream(arr);
-
常用方法:
- Stream filter(Predicate pre) 过滤方法,满足条件就放入流中,否则新流中一条数据没有
- Stream limit(int len) 截取指定的元素个数
- Stream skip(int len) 跳过指定的元素个数
- Stream concat(Stream s1,Stream s2); 将两个流拼接成一个新流
- Stream distinct(); 将流中的数据去重 (hashCode + equals)
- Stream map(Function<T,R> fun) 将集合中的元素,从T类型,转成R类型;
- IntStream mapToInt(Function<T,R> fun); 同上,只不过IntStream比Stream多了一些操作基本类型的方法
- void foreach(Consumer con); 遍历
- int count(); 统计长度
- Collect(Collector c) 将流中处理好的数据,收集到指定的容器中
- Collectors.toList(); List集合
- Collectors.toSet(); Set集合
- Collectors.toMap(key,value); 将容器中的元素收集成Map集合
-