java stream-终结操作 collect收集到集合中、toArray收集到数组 作者:马育民 • 2023-04-07 22:30 • 阅读:10053 # collect 将流中的数据,收集到集合(List、Set)中 ### 收集到 List ``` List list = new ArrayList<>(); Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四"); List resList = list.stream() .filter(item -> item.startsWith("李")) // 过滤姓李的数据 .collect(Collectors.toList()); // 将流中的数据收集到 List 中,并返回该List for(String item : resList){ System.out.println(item); } ``` ### 收集到 Set ``` List list = new ArrayList<>(); Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李雷"); Set resList = list.stream() .filter(item -> item.startsWith("李")) // 过滤姓李的数据 .collect(Collectors.toSet()); // 将流中的数据收集到 List 中,并返回该 Set for(String item : resList){ System.out.println(item); } ``` # toArray 将流中的数据,收集到数组中 ### 例子 - 返回 Object 数组 **注意:**只能返回 `Object` 数组 ``` List list = new ArrayList<>(); Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四"); Object[] arr = list.stream() .filter(item -> item.startsWith("李")) // 过滤姓李的数据 .toArray(); // 将流中的数据收集到 数组 中,并返回该 数组 for(Object item : arr){ System.out.println(item); } ``` ### 例子 - 返回 指定类型 的数组 ``` List list = new ArrayList<>(); Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四"); String[] arr = list.stream() .filter(item -> item.startsWith("李")) // 过滤姓李的数据 /* 将流中的数据收集到 数组 中,并返回该 数组 length:表示数组的长度 */ .toArray( length -> new String[length] ); for(Object item : arr){ System.out.println(item); } ``` 原文出处:http://malaoshi.top/show_1IX5HCc6Oo20.html