【发布时间】:2019-03-05 02:10:25
【问题描述】:
给定一个Set 的对象,我想遍历它的所有(无序)对。
示例:Set = {1, 2, 3},对:(1, 2), (1, 3), (2, 3)。
在处理Vector<Integer> 时,可以借助每个元素的索引来实现:
for (int i = 0; i < vector.size(); i++)
for (int j = i + 1; j < vector.size(); j++)
// Do something with vector.get(i) and vector.get(j)
但是Set<Integer> 中的元素没有索引。
到目前为止,我发现的最佳解决方案是将 Set 转换为 Vector 并使用上述解决方案。
有没有更有效/直接的解决方案?
【问题讨论】:
-
嵌套循环中只需要一个向量/数组。但除此之外,我认为这是最好的解决方案。
-
@Jochen 我认为 List 是首选解决方案
-
实际上,我会选择一个数组,因为 Set 可以直接生成一个。但是如果你想要一个集合,那么可以,使用一个列表。
-
感谢大家对 List 和 Array 的提示!我会记住的。如果不付出更大的努力,似乎无法实现不转换的解决方案?
-
请记住
Set的界面不保证顺序。因此“索引”值可能会发生变化,尤其是在Set发生突变的情况下。