1
が、私は私のクラスに次のコードがあります。何らかの理由でadd(elem)メソッドは、配列内のすべての要素をelemに変更しますか?
public static ArrayList<String[]> allCombos;
public static void main(String[] args){
allCombos = new ArrayList<String[]>();
String[] arr = {"A","B","C","D","E","F"};
combinations(arr, 3, 0, new String[3]);
}
static void combinations(String[] arr, int len, int startPosition, String[] result){
if (len == 0){
allCombos.add(result); // this is where the problem seems to be
return;
}
for (int i = startPosition; i <= arr.length-len; i++){
result[result.length - len] = arr[i];
combinations(arr, len-1, i+1, result);
}
}
、allCombos.add(result)
はcombinations()
に呼び出されるたびに、この方法は、それによって、結果の現在の値に全体の配列内のすべての要素を1つ設定しているようです以前の反復でcombinations()
が最後に追加された値をallCombos
として設定したことを乗り越えました。 allCombos
がVector
の場合も同じことが起こります。
なぜこれが起こっているのか、どのように修正できるのか誰にでも教えてください。
you'reは専用文字列 'の1つのインスタンスでの作業[] 'この結果、このインスタンスは' List'で複数回beeingされますが、この 'Strin g []は複数回修正されます。 – SomeJavaGuy