一种Java方法,用于将多个集合作为一个集合进行访问,而无需连接
可能重复:一种Java方法,用于将多个集合作为一个集合进行访问,而无需连接,java,algorithm,collections,interface,iterator,Java,Algorithm,Collections,Interface,Iterator,可能重复: 我有很多小收藏,我想作为一个整体访问 例如,我可以创建一个新的LinkedList,并向其中添加所有元素。但我在想,可能有一些工具可以添加完整的集合,而不必重新链接每个项目。我不是说addAll。集合应保持分离,但似乎只有与外部分开 有什么想法吗?Google Guava项目有一个名为迭代器的类,它提供了获取迭代器并对其应用转换的实用程序。它们提供的函数之一是called,它接收多个迭代器并生成一个新的迭代器,该迭代器在这些迭代器的串联上进行迭代。这可能不是您想要的,但它将为您提供
我有很多小收藏,我想作为一个整体访问 例如,我可以创建一个新的
LinkedList
,并向其中添加所有元素。但我在想,可能有一些工具可以添加完整的集合
,而不必重新链接每个项目。我不是说addAll
。集合
应保持分离,但似乎只有与外部分开
有什么想法吗?Google Guava项目有一个名为
迭代器的类,它提供了获取迭代器并对其应用转换的实用程序。它们提供的函数之一是called,它接收多个迭代器并生成一个新的迭代器,该迭代器在这些迭代器的串联上进行迭代。这可能不是您想要的,但它将为您提供跨多个元素迭代的功能,而无需复制所有元素
在使用您提出的集合时,您可能需要考虑的一个问题是,如果您尝试对集合进行变异,会发生什么情况。例如,如果您添加一个元素,它会去哪里?如果您只需要迭代,而不需要考虑这个问题,那么您可能需要使用迭代器.concat
方法。在标准Java中,您最好创建一个集合集合集合
如果你要采用“番石榴”,你可以用“Iterable”来创造这样的野兽:
附言:
代我向格雷戈·萨姆萨问好 查看Google Guava库,其中包括一个包含许多有用静态方法的迭代器类。在本例中,可以使用将每个小集合上的迭代器组合成一个迭代器,该迭代器将遍历所有集合
// First collection.
List<String> l = new LinkedList<String>();
l.add("Hello");
l.add("Hi");
// Second collection.
Set<String> s = new HashSet<String>();
s.add("Goodbye");
// Combine iterators over both collections.
Iterator<String> it = Iterators.concat(l.iterator, s.iterator());
//第一个集合。
列表l=新的LinkedList();
l、 加上(“你好”);
l、 添加(“Hi”);
//第二集。
Set s=新的HashSet();
s、 加上(“再见”);
//在两个集合上组合迭代器。
Iterator it=Iterators.concat(l.Iterator,s.Iterator());