Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一种Java方法,用于将多个集合作为一个集合进行访问,而无需连接_Java_Algorithm_Collections_Interface_Iterator - Fatal编程技术网

一种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());