Java中如何将两个列表组合为一个列表呢?

陈欣 Java经验 发布时间:2023-08-24 09:25:12 阅读数:11604 1
下文笔者讲述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);
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202308/16928403417277.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者