把Stream流操作后的结果数据转回到集合或者数组中
stream流的收集方法
名称 | 说明 |
R collect(Collector collector) | 开始收集Stream流,指定收集器 |
public static <T> Collector toList() | 把元素收集到List集合中 |
public static <T> Collector toSet() | 把元素收集到Set集合中 |
public static Collector toMap(Function keyMapper Function valueMapper) | 把元素收集到Map集合中 |
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张一一");
list.add("张二");
list.add("张三三");
list.add("张三三");
list.add("李思思");
list.add("刘武");
list.add("张六");
list.add("张琪琪");
Stream<String> s1 =list.stream().filter(s -> s.startsWith("张"));
List<String> zhangList = s1.collect(Collectors.toList());
System.out.println(zhangList);
// jdk16
// 不可变集合
// List<String> list1 =s1.toList();
// System.out.println(list1);
//注意[流只能使用一次]
// stream has already been operated upon or closed
Stream<String> s2 =list.stream().filter(s -> s.startsWith("张"));
Set<String> zhangSet = s2.collect(Collectors.toSet());
System.out.println(zhangSet);
Stream<String> s3 =list.stream().filter(s -> s.startsWith("张"));
String[] a1 =s3.toArray(String[]::new);
System.out.println(Arrays.toString(a1));
Stream<String> s4 =list.stream().filter(s -> s.startsWith("张"));
Object[] arys = s4.toArray();
System.out.println(Arrays.toString(arys));
}
}