小さな配列にremove()
メソッドによってランダムにいくつかの要素が削除された大きな配列をコピーしたいと思います。Java大きな配列を小さな配列にコピーする方法は?
私はSystem.arraycopy()
を使用しましたが、このメソッドは要素をそれぞれコピーします。したがって、大きな配列の一部の要素はコピーされません。
大きな配列の削除されていない要素をすべて、小さな配列にコピーします。この配列の長さは、大きな配列の削除されていない要素の数に等しくなります。
小さな配列にremove()
メソッドによってランダムにいくつかの要素が削除された大きな配列をコピーしたいと思います。Java大きな配列を小さな配列にコピーする方法は?
私はSystem.arraycopy()
を使用しましたが、このメソッドは要素をそれぞれコピーします。したがって、大きな配列の一部の要素はコピーされません。
大きな配列の削除されていない要素をすべて、小さな配列にコピーします。この配列の長さは、大きな配列の削除されていない要素の数に等しくなります。
import java.util.concurrent.ThreadLocalRandom; //for shuffling array
import java.util.Random; //for shuffling solution
public class BigToSmallArray {
public static void main(String[] args) {
int[] bigArray = new int[]{0,1,2,3,4,5,6,7,8,9};
int[] smallArray = new int[5];
int[] shuffledBigArray = shuffleArray(bigArray);
for(int i = 0; i < smallArray.length; i++) {
smallArray[i] = shuffledBigArray[i];
}
}
public static int[] shuffleArray(int arr[]) {
Random rnd = ThreadLocalRandom.current();
for (int i = arr.length - 1; i > 0; i--) {
int index = rnd.nextInt(i + 1);
// Simple swap
int a = arr[index];
arr[index] = arr[i];
arr[i] = a;
}
return arr;
}
}
あなたは、溶液は超シンプルで、他の「システムライブラリ」を使用することが許可されている場合:
arraycopy()
あるとsmaller
にlarger
からsmaller.length
要素をコピーポイントです:あなたは大きな配列をシャッフルするとき、あなたはランダムな順番に入れて!
しかし、あなたがでない場合、は "システム"ライブラリを使用できます。あなた自身をシャッフルします:
larger
;そして各反復のために、再度のarraycopy使用することができ、その後そのランダムに選択されたインデックスでlarger.length
コードを表示してください。私はそれを正しく得ることができませんでした。 –
私は意図的にコードを表示しませんでした。私はこれが何らかの宿題だと思う。あなたは宿題をしている他の人から学ばない。しかし、私はまた、コードの2行に沸騰する別の提案を追加... – GhostCat
大きな配列の要素を小さな配列にランダムに追加*しないのはなぜですか? – CraigR8806
お返事ありがとうございます。これは本当に良いアイデアですが、私はちょうどそれをやってみました。どうしたらいいか教えていただけますか? –
ようこそスタックオーバーフロー。通常は、尋問者が最初に試行を表示するか、少なくとも検索と調査の記録を行う必要があります。それは厳しいものではありません。何があなたに挑戦するのかをより明確に理解しているときに、あなたを導くことはずっと簡単です。 –