我想获取集合中每两个不同元素的对。我认为如果使用for-each循环,则必须以O(n ^ 2)的复杂度进行迭代。如果使用迭代器,则可以有两个迭代器,其中第二个指向第一个迭代器,这意味着对于第二个循环,我不必从头开始循环。但是,我似乎无法正确打印我的方法。
public static void main(String[] args){
Set<String> s = new HashSet<String>();
s.add("A");
s.add("B");
s.add("C");
s.add("D");
Iterator<String> itr1 = s.iterator();
while (itr1.hasNext()){
Iterator<String> itr2 = itr1;
String s1 = itr1.next();
while (itr2.hasNext()){
String s2 = itr2.next();
System.out.println(s1 + " " + s2);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是
A B
A C
A D
Run Code Online (Sandbox Code Playgroud)
但是我想要的是:
A B
A C
A D
B C
B D
C D
Run Code Online (Sandbox Code Playgroud) java ×1