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);
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


