收集Stream流
Stream流的收集操作:
收集Stream流的含义:就是把Stream流操作后的结果数据转回到集合或者数组中去。
Stream流:方便操作集合/数组的手段。
集合/数组:才是开发中的目的。
Stream流的收集方法:
名称 | 说明 |
---|---|
collect(Collector collector) | 开始收集Stream流,指定收集器 |
Collectors工具类提供了具体的收集方式:
名称 | 说明 |
---|---|
Collector toList() | 把元素收集到List集合中 |
Collector toSet() | 把元素收集到Set集合中 |
Collector toMap(Function keyMapper , Function valueMapper) | 把元素收集到Map集合中 |
示例代码:
收集Stream流到一个新的List集合中
public static void main(String[] args) {
List<String> names = new ArrayList<>();
Collections.addAll(names,"张无忌", "赵敏", "周芷若", "张三丰", "张三");
// 过滤姓张的名字
Stream<String> s1 = names.stream().filter(s -> s.startsWith("张"));
// 将过滤后的流放入一个新集合中
List<String> newNames = s1.collect(Collectors.toList());
System.out.println(newNames); // [张无忌, 张三丰, 张三]
}
收集Stream流到一个新的Set集合中
public static void main(String[] args) {
List<String> names = new ArrayList<>();
Collections.addAll(names,"张无忌", "赵敏", "周芷若", "张三丰", "张三");
// 过滤姓张的名字
Stream<String> s1 = names.stream().filter(s -> s.startsWith("张"));
// 将过滤后的流放入一个新集合中
Set<String> newNames = s1.collect(Collectors.toSet());
System.out.println(newNames); // [张三, 张三丰, 张无忌]
}
收集Stream流到一个新的数组中
public static void main(String[] args) {
List<String> names = new ArrayList<>();
Collections.addAll(names,"张无忌", "赵敏", "周芷若", "张三丰", "张三");
// 过滤姓张的名字
Stream<String> s1 = names.stream().filter(s -> s.startsWith("张"));
// 将过滤后的流放入一个新数组中
Object[] newNames = s1.toArray();
System.out.println(Arrays.toString(newNames)); // [张无忌, 张三丰, 张三]
}
小结: 收集Stream流的作用 ?
Stream流只是操作集合/数组的手段
操作的结果数据最终要恢复到集合或者数组中去。