gpt4 book ai didi

java - 哪个 Java 集合允许廉价追加?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:52 24 4
gpt4 key购买 nike

我正在寻找 Java 中的列表数据结构,它允许廉价地附加长列表。我尝试了 LinkedList 但我在 addAll 的文档中找到了,一个迭代器用于附加两个列表。这意味着被追加的列表在操作期间被克隆。迭代器遍历整个列表,返回每个元素。是否有任何可用的集合在附加两个列表时省略了迭代?

最佳答案

您可以使用 Guava's Iterables.concat创建串联的可迭代 View 的方法..

Iterable<T> combined = Iterables.concat(list1, list2);
  • 不会将元素从一个列表复制到另一个..
  • 因此,它不会更改您的任何列表..
  • 此外,这不会创建一个新列表(它会创建一个不是列表的Iterable)

基本上,它创建了一个 Iterable,通过它您可以背对背地迭代 两个 列表(它从 list1 然后从 list2 迭代元素..

注意:- 如果您想要一个列表作为两个列表的串联,那么这可能对您没有太大帮助。因为,它不会创建一个列表,而是一个 Iterable.. 对于这种情况,你别无选择,只能Iterating over your lists and copy your reference..

来自docs :-

It Combines two iterables into a single iterable. The returned iterable has an iterator that traverses the elements in a, followed by the elements in b. The source iterators are not polled until necessary. The returned iterable's iterator supports remove() when the corresponding input iterator supports it.

您还有此方法的var-args 版本See Docs .. 这可以采用任意数量的列表,并返回可以按顺序迭代这些列表的 Iterables.. 所以,你可以这样做..

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

此链接 --> google-guava-libraries-essentials您可能也会感兴趣..

关于java - 哪个 Java 集合允许廉价追加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12818789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com