在java中生成列表字符串的组合

在java中生成列表字符串的组合,java,string,for-loop,arraylist,combinations,Java,String,For Loop,Arraylist,Combinations,我有一个名为ListTeam的列表,它由字符串组成。我需要生成这些字符串的所有唯一组合,并将它们存储在另一个名为lines的ArrayList中。我尝试了以下方法,但结果并不理想: for(int i=0; i<listTeams.size();i++){ for(int j=1;j<listTeams.size();j++){ if (listTeams.get(j).equals(listTeams.get(i)))

我有一个名为ListTeam的列表,它由字符串组成。我需要生成这些字符串的所有唯一组合,并将它们存储在另一个名为lines的ArrayList中。我尝试了以下方法,但结果并不理想:

for(int i=0; i<listTeams.size();i++){
    for(int j=1;j<listTeams.size();j++){
       if (listTeams.get(j).equals(listTeams.get(i)))
                    continue;

           for(int k=2;k<listTeams.size();k++){

                if (listTeams.get(k).equals(listTeams.get(i)) || listTeams.get(k).equals(listTeams.get(j)))
                    continue;
                String str = listTeams.get(i)+listTeams.get(j)+listTeams.get(k);
                lines.put(str,new ArrayList<String>());                 
                }
             }              
           }
我想要的是:

a_b_c
a_b_d
a_c_d
b_c_d

for(int i=0;i您需要修改for循环,如下所示:

for (int j = i;

因此,只有唯一的组合才会出现

,正如#Berger所说,下面的代码正按照您的预期工作

for (int i = 0; i < listTeams.size(); i++) {
            for (int j = i+1; j < listTeams.size(); j++) {
                if (listTeams.get(j).equals(listTeams.get(i)))
                    continue;

                for (int k = j+1; k < listTeams.size(); k++) {

                    if (listTeams.get(k).equals(listTeams.get(i)) || listTeams.get(k).equals(listTeams.get(j)))
                        continue;
                    String str = listTeams.get(i) + listTeams.get(j) + listTeams.get(k);
                    lines.add(str);
                }
            }
        }
for(int i=0;i
C_B_D?你也想要吗?也许你可以试试
for(int j=i+1
for(int k=j+1
@KristjanKica不,我已经编辑了我的qs。谢谢!@Berger非常感谢!!它很有魅力!
for (int j = i;
for (int k = j; 
for (int i = 0; i < listTeams.size(); i++) {
            for (int j = i+1; j < listTeams.size(); j++) {
                if (listTeams.get(j).equals(listTeams.get(i)))
                    continue;

                for (int k = j+1; k < listTeams.size(); k++) {

                    if (listTeams.get(k).equals(listTeams.get(i)) || listTeams.get(k).equals(listTeams.get(j)))
                        continue;
                    String str = listTeams.get(i) + listTeams.get(j) + listTeams.get(k);
                    lines.add(str);
                }
            }
        }