在Java中生成所有排列

10

可能重复:
生成给定字符串的所有排列

我在Java中有一个长度任意的数组,并且我想生成它们的所有可能排列。对于固定长度,简单的方法是一系列嵌套的for循环,但由于数组长度未知,这不是一个选项。在Java中是否有一种简单的方法来完成这个任务?


2
在搜索框中输入“[java]排列组合”即可。 - MByD
4
如果它是一个数组,你可以使用array.length;如果它是一个List,你可以使用list.size()。我不理解"not an option"的意思。 - duffymo
2
@duffymo:所以我希望看到你在代码中获取数组长度后动态生成嵌套的for循环... - Jan Zyka
请查看Guava的Collections2.permutation函数:https://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/collect/Collections2.java?r=HEAD#537 - Janus Troelsen
@JanZyka - 这与嵌套循环无关,你只需要一个堆栈数据结构。归根结底,所有的流程控制都只是if和goto。 - CurtainDog
讽刺的是 :) 我刚才说,即使你知道数组长度,也不能在代码中动态生成数组长度的嵌套循环。 - Jan Zyka
2个回答

3

使用递归函数代替循环。每次调用方法时,应该是在数组的较小部分上,并在长度为0时停止。这个链接可以帮助你设计函数。


0

从性能角度来看,这种方法可能不是最优的,但如果你想用相对较少的代码编写清晰易于维护的程序,那么你需要使用递归方法而不是嵌套循环。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接