将 3 个数组列表合并为一个

Posted

技术标签:

【中文标题】将 3 个数组列表合并为一个【英文标题】:Merge 3 arraylist to one 【发布时间】:2012-01-27 08:32:48 【问题描述】:

我想在java中将3个arraylist合并为一个。有谁知道做这种事情的最佳方法是什么?

【问题讨论】:

我很困惑。该问题没有说明 2D 列表,但接受的答案和 cmets 讨论 2D,而另一个答案专门针对 2D 列表。那么,这是要获取一些 List<T> 并使用原件的所有元素制作一个 List<T>,还是要制作一个包含每个原件的 List<List<T>> 输出是ArrayList<something> 的实例而不仅仅是List 重要吗? 【参考方案1】:

使用ArrayList.addAll()。这样的事情应该可以工作(假设列表包含String 对象;您应该相应地进行更改)。

List<String> combined = new ArrayList<String>();
combined.addAll(firstArrayList);
combined.addAll(secondArrayList);
combined.addAll(thirdArrayList);

更新

我可以通过您的 cmets 看到您实际上可能正在尝试创建 2D 列表。如果是这样,如下代码应该可以工作:

List<List<String>> combined2d = new ArrayList<List<String>>();
combined2d.add(firstArrayList);
combined2d.add(secondArrayList);
combined2d.add(thirdArrayList);

【讨论】:

Xm 我认为这个解决方案是关于创建一个 2d Arraylist。我想将 3 个列表并排放置到一个新列表中。 @snake plissken:你在问题中没有提到二维列表。但是,我已经更新了我的答案以包含 2D 解决方案。 @snakeplissken - 这个答案会如你所愿,不涉及 2D。【参考方案2】:

使用 java.util.Arrays.asList 来简化合并怎么样?

List<String> one = Arrays.asList("one","two","three");
List<String> two = Arrays.asList("four","five","six");
List<String> three = Arrays.asList("seven","eight","nine");

List<List<String>> merged = Arrays.asList(one, two, three);

【讨论】:

这比第一个答案好多了。这是一种将列表合并为二维列表的更简洁的方法。 注意:您通常将其称为Arrays.asList() 请注意,这会产生固定大小的List&lt;List&lt;String&gt;&gt;,而不是ArrayList&lt;ArrayList&lt;String&gt;&gt;。 OP 特别要求ArrayList。我不确定他们想要 1D 还是 2D,但肯定是 ArrayList【参考方案3】:

使用 Java 8 流:

列表列表

List<List<String>> listOfList = Stream.of(list1, list2, list3).collect(Collectors.toList());

字符串列表

List<String> list = Stream.of(list1, list2, list3).flatMap(Collection::stream).collect(Collectors.toList());

使用 Java 9 List.of 静态工厂方法(警告:此列表是不可变的并且不允许为空)

List<List<String>> = List.of​(list1, list2, list3);

其中list1, list2, list3 的类型为List&lt;String&gt;

【讨论】:

以上是关于将 3 个数组列表合并为一个的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 中将 2 个数组合并为 1 个数组? [复制]

将N个数组合并为一个?

如何把2个数组合并为一个数组

分治策略合并多个排序数组

如何在python中把两个列表的各项分别合并为列表

如何将列表合并到元组列表中?