如何获得所有可能的组合在Array
问题描述:
我有一个数组(JAVA)是这样的:如何获得所有可能的组合在Array
String arrName[] = {"John","Paul","Luke","Ana"};
,我想有一个像这样的输出:
JohnPaul
JohnLuke
JohnAna
PaulJohn
PualLuke
PaulAna
LukeJohn
LukePaul
LukeAna
AnaJohn
AnaPaul
AnaLuke
有人可以帮助我?
答
您正在寻找这样的事情: -
for(int i=0 ; i < arrName.length ; i++){
for(int j=0; j< arrName.length; j++){
if(j != i){
System.out.println(arrName[i]+arrName[j]);
}
}
}
答
做阵列和阵列的嵌套foreach循环形式的副本之间的交叉产品。跳过等于海誓山盟
String[] copyArrName = arrName;
for (String name : arrName){
for (String otherName: copyArrName){
if(name != otherName)
System.out.println(name + " " + otherName);
}
}
这会给你所需的输出
+0
它会减少组合的情况下,如果他有重复条目阵列。 var array Name = {“John”“Paul”,“John”}。这段代码将跳过johnjohn。 – Panther 2014-12-08 05:33:01
+0
不错,我们应该使用引用字符串比较而不是字符串相等比较。编辑传入! – Freestyle076 2014-12-08 05:34:18
你需要一些组合algorythm做到这一点[组合](http://en.wikipedia.org/wiki/Combination名称)这里是解决你的问题的库[combinatoricslib](https://code.google.com/p/combinatoricslib/) – Milkmaid 2014-12-08 05:16:53
你想知道的解决方案或只是有人可以帮忙或不::) – Panther 2014-12-08 05:24:28
可能的重复[一个数组的所有可能的组合](http://stackoverflow.com/questions/5162254/all-possible-combinations-of-an-array) – 2014-12-08 05:35:39