java stream-终结操作 collect收集到集合中、toArray收集到数组

collect

将流中的数据,收集到集合(List、Set)中

收集到 List

List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四");
List<String> resList = list.stream()
        .filter(item -> item.startsWith("李")) // 过滤姓李的数据
        .collect(Collectors.toList()); // 将流中的数据收集到 List 中,并返回该List

for(String item : resList){
    System.out.println(item);
}

收集到 Set

List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李雷");
Set<String> resList = list.stream()
        .filter(item -> item.startsWith("李")) // 过滤姓李的数据
        .collect(Collectors.toSet()); // 将流中的数据收集到 List 中,并返回该 Set

for(String item : resList){
    System.out.println(item);
}

toArray

将流中的数据,收集到数组中

例子 - 返回 Object 数组

注意:只能返回 Object 数组

List<String> 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<String> 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);
}

原文出处:https://malaoshi.top/show_1IX5HCc6Oo20.html