收集Stream流的数据到集合或数组中
1 public static void main(String[] args) { 2 List<String> list = new ArrayList<>(); 3 list.add("张三"); 4 list.add("李四"); 5 list.add("王武"); 6 list.add("王武"); 7 8 // 收集 Stream 流的数据 到集合或数组中 9 Stream<String> s1 = list.stream().filter(s -> s.startsWith("王")); 10 List<String> c1 = s1.collect(Collectors.toList()); 11 System.out.println(c1); 12 13 // “流” 只能使用一次,要想再次使用必须开辟新的 “流” 14 Stream<String> s2 = list.stream().filter(s -> s.startsWith("王")); 15 List<String> c2 = s2.collect(Collectors.toList()); 16 System.out.println(c2); 17 }
拓展一下
1 public static void main(String[] args) { 2 List<String> list = new ArrayList<>(); 3 list.add("张三"); 4 list.add("李四"); 5 list.add("王武"); 6 list.add("王武"); 7 8 // 收集 Stream 流的数据 到集合或数组中 9 Stream<String> s1 = list.stream().filter(s -> s.startsWith("王")); 10 List<String> c1 = s1.collect(Collectors.toList());// 可变 11 System.out.println(c1); 12 // List<String> s2 = s1.toList();// 不可变 13 // s2.add("java"); 14 // System.out.println(s2); 15 16 // “流” 只能使用一次,要想再次使用必须开辟新的 “流” 17 Stream<String> s2 = list.stream().filter(s -> s.startsWith("王")); 18 List<String> c2 = s2.collect(Collectors.toList()); 19 System.out.println(c2); 20 21 Stream<String> s3 = list.stream().filter(s -> s.startsWith("王")); 22 // String[] array1 = s3.toArray(new IntFunction<String[]>() { 23 // @Override 24 // public String[] apply(int value) { 25 // return new String[value]; 26 // } 27 // }); 28 // 同上 简化 29 String[] array2 = s3.toArray(s -> new String[s]); 30 // Object[] array = s3.toArray(); 31 // String[] array3 = s3.toArray(String[]::new); // 拓展 32 // Integer[] array4 = s3.toArray(s -> new Integer[s]);// 拓展 33 System.out.println(Arrays.toString(array2)); 34 35 }