Java 合并多个 List 列表的几种方法

Home / Code / Body Text
  1. 传统方法:new ArrayList() + addAll()

    List<Integer> list1 = Arrays.asList(1, 2, 3);
    List<Integer> list2 = Arrays.asList(4, 5);
    List<Integer> list3 = Arrays.asList(6);
    
    List<Integer> mergedList = new ArrayList<>();
    
    mergedList.addAll(list1);
    mergedList.addAll(list2);
    mergedList.addAll(list3);
    
    System.out.println(mergedList); // 输出:[1, 2, 3, 4, 5, 6]
  2. Java 8 + Stream API

    List<Integer> list1 = Arrays.asList(1, 2);
    List<Integer> list2 = Arrays.asList(3, 4);
    List<Integer> list3 = Arrays.asList(4, 5);
    
    // 1. 基础合并(不去重)
    List<Integer> mergedList = Stream.of(list1, list2, list3) // 包装为 Stream<List<Integer>>
                                 .flatMap(Collection::stream) // 扁平化为 Stream<Integer>
                                 .collect(Collectors.toList()); // 收集为 List
    
    // 2. 合并+去重+排序
    List<Integer> mergedDistinctSortedList = Stream.of(list1, list2, list3)
                                                .flatMap(Collection::stream)
                                                .distinct() // 去重
                                                .sorted() // 排序
                                                .collect(Collectors.toCollection(ArrayList::new)); // 指定 List 实现类
    
    System.out.println(mergedList); // [1, 2, 3, 4, 4, 5]
    System.out.println(mergedDistinctSortedList); // [1, 2, 3, 4, 5]
  3. Java 16 + Stream.concat()

    List<String> listA = List.of("a", "b");
    List<String> listB = List.of("c");
    List<String> listC = List.of("d", "e");
    
    List<String> mergedList = Stream.concat(
                                 listA.stream(),
                                 listB.stream(),
                                 listC.stream()
                           ).collect(Collectors.toList());
    
    System.out.println(mergedList); // [a, b, c, d, e]
Reward
Comments Section
头像