2017-04-05 8 views
0

小さな配列にremove()メソッドによってランダムにいくつかの要素が削除された大きな配列をコピーしたいと思います。Java大きな配列を小さな配列にコピーする方法は?

私はSystem.arraycopy()を使用しましたが、このメソッドは要素をそれぞれコピーします。したがって、大きな配列の一部の要素はコピーされません。

大きな配列の削除されていない要素をすべて、小さな配列にコピーします。この配列の長さは、大きな配列の削除されていない要素の数に等しくなります。

+0

大きな配列の要素を小さな配列にランダムに追加*しないのはなぜですか? – CraigR8806

+0

お返事ありがとうございます。これは本当に良いアイデアですが、私はちょうどそれをやってみました。どうしたらいいか教えていただけますか? –

+0

ようこそスタックオーバーフロー。通常は、尋問者が最初に試行を表示するか、少なくとも検索と調査の記録を行う必要があります。それは厳しいものではありません。何があなたに挑戦するのかをより明確に理解しているときに、あなたを導くことはずっと簡単です。 –

答えて

0
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; 
    } 
} 
+0

あなたの大きな助けに感謝します。それは私のために働いています:) –

+0

@ M.Aktas問題はありません。幸運:) – noobcoder

+0

@ M.Aktasまたは代わりにArrayListを使用して変換する場合は、ArrayListの要素をシャッフルするメソッドが、私はできません正確なメソッド名を覚えて、あなたはAPIでそれを見つけることができます。 – noobcoder

0

あなたは、溶液は超シンプルで、他の「システムライブラリ」を使用することが許可されている場合:

  • Shuffle大きな配列(またはそのコピー、あなたのように大規模な配列を維持する必要がある場合
  • )使用arraycopy()あるとsmaller

largerからsmaller.length要素をコピーポイントです:あなたは大きな配列をシャッフルするとき、あなたはランダムな順番に入れて!

しかし、あなたがでない場合、は "システム"ライブラリを使用できます。あなた自身をシャッフルします:

  • 反復larger;そして各反復のために、再度のarraycopy使用することができ、その後そのランダムに選択されたインデックス

larger.length

  • スワップ以内に現在の反復の要素をランダムint型を計算します。

  • +0

    コードを表示してください。私はそれを正しく得ることができませんでした。 –

    +0

    私は意図的にコードを表示しませんでした。私はこれが何らかの宿題だと思う。あなたは宿題をしている他の人から学ばない。しかし、私はまた、コードの2行に沸騰する別の提案を追加... – GhostCat

    関連する問題