我有一个 ArrayList,其中包含一系列整数(表示另一个 ArrayList 中的索引)。
我需要提取每个唯一的对,例如...
ArrayList = 1,4,5,7
我需要:
1:4
1:5
1:7
4:5
4:7
5:7
实现这一目标的最简单方法是什么?
将列表转换为
Set
并返回 List
以进行独特的过滤
for(int i = 0 ; i < list.size(); i ++){
for(int j = i+1 ; j < list.size(); j ++){
System.out.println(list.get(i) + "," + .list.get(j))
}
}
我们将循环遍历第一个元素的所有可能选择。对于其中每一个,循环遍历第二个的所有可能选择。
我将把查找重复项的部分留给您(提示:使用
Set
)。
您可以有两个索引:一个用于第一部分,另一个用于第二部分。 然后与第一个形式的开始到唯一但最后一个元素进行交互,并在内部循环中与第二个形式从第一个元素到末尾进行迭代。
我想知道使用具有单向关系的图结构是否适合这个问题。
这比简单的排列需要更多的工作,但实现起来可能更有趣。特别适合大量配对。
根据给定的示例回答您的问题:您不需要转换为 Set 或 List:
for (int i = 0; i < input.length; i++) {
for (int j = i + 1; j < input.length; j++) {
if (i != j) {
System.out.println(input[i] + "," + input[j]);
}
}
}
示例: -> int[] input = {1,4,5,7};
输出:
1,4
1,5
1,7
4,5
4,7
5,7