Java 列出集合元素的所有组合
在一个集合的元素中,我想列出这个集合的所有3个组合。 有办法吗 如果它是一个列表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
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);
}
}
}