Java中如何将两个列表组合为一个列表呢?
下文笔者讲述java代码两个列表组合为一个列表的方法及示例分享,如下所示
方式1: 使用list.addAll() 方式2: 双大括号初始化 方式3: Collections.addAll()静态方法 方式4: Stream.of() 和 flatMap() 方式5: Stream.concat() 方式6: Guava库中的Iterables.addAll() 方式7: Apache Commons中 ListUtils类提供 union()例:组合两个List集合的示例分享
使用List.addAll() List接口提供addAll(Collection) 将指定集合的所有元素附加到列表末尾的方法 //Java 中连接两个列表的通用方法 public static<T> List<T> merge(List<T> list1, List<T> list2) { List<T> list = new ArrayList<>(); list.addAll(list1); list.addAll(list2); return list; } //双括号初始化 public static<T> List<T> merge(List<T> list1, List<T> list2) { return new ArrayList<T>() {{ addAll(list1); addAll(list2); }}; } //使用 Collections.addAll() public static List<String> merge(List<String> list1, List<String> list2) { List<String> list = new ArrayList<>(); Collections.addAll(list, list1.toArray(new String[0])); Collections.addAll(list, list2.toArray(new String[0])); return list; } //Java 8 使用 Stream.of() 和 flatMap() public static<T> List<T> merge(List<T> list1, List<T> list2) { return Stream.of(list1, list2) .flatMap(x -> x.stream()) .collect(Collectors.toList()); } public static<T> List<T> merge(List<T> list1, List<T> list2) { List<T> list = new ArrayList<>(); Stream.of(list1, list2).forEach(list::addAll); return list; } //使用 Stream.concat() public static<T> List<T> merge(List<T> list1, List<T> list2) { return Stream.concat(list1.stream(), list2.stream()) .collect(Collectors.toList()); } //或 public static<T> List<T> merge(List<T> list1, List<T> list2) { List<T> list = list1.stream().collect(Collectors.toList()); list.addAll(list2); return list; } //使用 Guava 库 //Guava’s Iterables 类提供了许多静态实用方法 //用于操作或返回类型的对象 Iterable. //concat() 可用于将两个可迭代对象组合成一个可迭代对象。 public static<T> List<T> merge(List<T> list1, List<T> list2) { return Lists.newArrayList(Iterables.concat(list1, list2)); } //使用 Iterables.addAll() addAll() 将可迭代的所有元素添加到集合中 public static<T> List<T> merge(List<T> list1, List<T> list2) { List<T> list = Lists.newArrayList(); Iterables.addAll(list, list1); Iterables.addAll(list, list2); return list; } //使用 Apache Commons 集合 //Apache Commons 集合ListUtils类提供union()方法 //将两个列表作为输入并返回一个新列表,其中包含附加到第一个列表的第二个列表。 public static<T> List<T> merge(List<T> list1, List<T> list2) { return ListUtils.union(list1, list2); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。