JUG*_*JUG 7 java java-7 java-collections-api
有没有一种有效的方法来查找Java中多个枚举之间的所有可能组合?
考虑以下三个枚举 -
public enum EnumOne {
One ("One"),
OneMore ("OneMore");
}
public enum EnumTwo {
Two ("Two"),
}
public enum EnumThree {
Three ("Three"),
ThreeMore ("ThreeMore");
}
Run Code Online (Sandbox Code Playgroud)
我希望输出产生这些多个枚举之间的所有可能组合,即
{EnumOne.One, EnumTwo.Two, EnumThree.Three},
{EnumOne.One, EnumTwo.Two, EnumThree.ThreeMore},
{EnumOne.OneMore, EnumTwo.Two, EnumThree.Three},
{EnumOne.OneMore, EnumTwo.Two, EnumThree.ThreeMore}
Run Code Online (Sandbox Code Playgroud)
希望找到一种有效的方法来处理它.
谢谢
Jos*_*nez -1
像这样的事情怎么样?
void printAll(List<Class> enums, int i, String[] msg) {
if (!enums.get(i).isEnum()) {
throw new IllegalStateException();
}
Object[] enumsConstants = enums.get(i).getEnumConstants();
if (i == 0) {
//first iteration
for (Object o : enumsConstants) {
if (enums.size() == 1) {
System.out.println("{ " + o.toString() + " }");
} else {
msg = new String[enums.size()];
msg[0] = "{ " + o.toString();
printAll(enums, i + 1, msg);
}
}
} else if (i == enums.size() - 1) {
//on the last iteration
for (Object o : enumsConstants) {
msg[i] = ", " + o.toString() + " }";
System.out.println(Arrays.toString(msg));
}
} else {
//middle iteration
for (Object o : enumsConstants) {
msg[i] = ", " + o.toString();
printAll(enums, i + 1, msg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
你会像这样使用它
printAll(allMyEnumClassesList, 0, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |