从字符串数组生成所有可能的组合,而无需重复java

我想将字符串数组的每个元素与除自身之外的其他元素进行比较,结果将是一个由此“->”分隔的字符串,结果的第二部分将是元素,而第一部分将是1或更大用“,”分隔的字符串

例如vector [a1,a2,a3] 输出:

a2-->a1
a3-->a1
a2,a3 -->a1

a1-->a2
a3-->a2
a1,a3 -->a2

a1-->a3
a2-->a3
a1,a2-->a3

我尝试此代码

    public static void main(String[] args) {
        int n = 3;
        String attribut;
        String vect[] = new String[n];
        vect[0] = "a1";
        vect[1] = "a2";
        vect[2] = "a3";
        int i = 0, j = 0, k = 0;
        for (i = 0; i < n; i++) {
            attribut = vect[i];
            for (j = 0; j < n; j++) {
                if (attribut != (vect[j])) {
                    System.out.println(vect[j] + "-->" + attribut);

                }
            }
            for (j = 0; j < n; j++) {

                for (k = j + 1; k < n; k++) {
                    if ((attribut != (vect[j])) && (attribut != (vect[k]))) {
                        System.out.println(vect[j] + "," + vect[k] + "-->" + attribut);

                    }
                }

            }
        }
    }

代码返回结果,但是当我有一个包含5个字符串的数组时,我不知道该怎么办 例如vect [a1,a2,a3,a4] 淘汰

a2-->a1
a3-->a1
a4-->a1
a2,a3 -->a1
a2,a4 -->a1
a3,a4-->a1
a2,a3,a4 -->a1
....

在这种情况下,->之前的逗号数增加到4。

评论