小编jor*_*goe的帖子

迭代集合中的两个不同元素?

我想获取集合中每两个不同元素的对。我认为如果使用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

5
推荐指数
1
解决办法
82
查看次数

标签 统计

java ×1