Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列出集合元素的所有组合_Java_List_Set_Combinations - Fatal编程技术网

Java 列出集合元素的所有组合

Java 列出集合元素的所有组合,java,list,set,combinations,Java,List,Set,Combinations,在一个集合的元素中,我想列出这个集合的所有3个组合。 有办法吗 如果它是一个列表 for(int i=0; i<list.size()-2; i++) for(int j=i+1; j<list.size()-1; j++) for(int k=j+1; k<list.size(); k++) System.out.println(list.get(i) + " " + list.get(j) + " " + list.get(k

在一个集合的元素中,我想列出这个集合的所有3个组合。 有办法吗

如果它是一个列表

for(int i=0; i<list.size()-2; i++)
    for(int j=i+1; j<list.size()-1; j++)
        for(int k=j+1; k<list.size(); k++)
            System.out.println(list.get(i) + " " + list.get(j) + " " + list.get(k));

for(int i=0;i转换为列表并使用代码中的逻辑将是我的第一选择。如果不想转换为列表,可以使用迭代器,如下所示:

Set<String> set = ...;
for (String a : set) {
    boolean bGo = false;
    for (String b : set) {
        if (bGo) {
            boolean cGo = false;
            for (String c : set) {
                if (cGo) {
                    System.out.println(a + " " + b + " " + c);
                } else if (b.equals(c)) {
                    cGo = true;
                }
            }
        } else if (a.equals(b)) {
            bGo = true;
        }
    }
}
Set=。。。;
for(字符串a:集合){
布尔bGo=false;
for(字符串b:集合){
如果(bGo){
布尔cGo=假;
for(字符串c:集合){
如果(cGo){
系统输出打印项次(a+“”+b+“”+c);
}否则,如果(b等于(c)){
cGo=真;
}
}
}否则,如果(a等于(b)){
bGo=true;
}
}
}
上面的逻辑在外部循环中自由迭代集合。当它开始在第一个嵌套循环中迭代集合时,它跳过元素,直到找到外部循环的当前元素为止(即直到
a.equals(b)
)。之后,它运行第三个嵌套循环,该循环将跳过集合中的所有数据,直到
b
,此时它开始生成组合输出

您的设置是a吗?如果是,您可以执行以下操作:

for (V x: mySet) {
  for (V y: mySet.tailSet(x, false)) {
    for (V z: mySet.tailSet(y, false)) {
      System.out.println(x + " " + y + " " + z);
    }
  }
}