Java 在 O(1) 中合并 2 个集合

2022-09-01 02:24:02

我需要能够将 2 个大型集合合并为 1 个。我最能使用哪种集合类型?我不需要随机访问单个元素。通常我会选择一个链接列表,但是我不能将Java中的2个链接列表与O(1)的运行时合并,这可以用许多其他语言完成,因为我必须将每个元素复制到新列表中。

编辑:感谢您的所有回答。您的回答都非常有帮助,我设法完成了工作。下次我将首先使用我自己的链表实现。


答案 1

您可以使用 GuavaIterables.concat 方法之一在 O(1) 中创建串联视图:Iterable

Iterable<T> combined = Iterables.concat(list1, list2);

这将允许您将两个列表的所有元素作为一个对象进行迭代,而无需复制任何元素。


答案 2

这里最简单的解决方案实际上是列表列表。意味着你需要一些简单的包装器函数,但并不复杂。