0

バイト配列があり、配列の最初の 50 要素を消去しようとしています。つまり、配列を消去した後、そのサイズは元のサイズよりも小さくなります。2 つの質問があります。

  • どうすれば時間効率の良い方法でそれを行うことができますか?
  • Javaネイティブメソッドで配列のサイズを変更することはできないと思いますが、間違っていますか? 検索しましたが見つかりませんでした。
4

5 に答える 5

4

それをコピーする必要があります - それにはいくつかの方法があります。例えば:

byte[] newArray = Arrays.copyOfRange(originalArray, 50, originalArray.length);

または、リストを使用して、コピーを回避するメソッドを呼び出すsubListことができます。

于 2013-05-06T14:08:23.297 に答える
1

配列 SIZES は可変ではありません。必要な適切なサイズの新しい配列を作成し、必要な情報をコピーする必要があります。これを行うか、変更可能な arraylist を使用できます。

于 2013-05-06T14:08:37.063 に答える
1

Q. Javaネイティブメソッドで配列のリサイズはできないと思いますが、間違っていますか? 検索しましたが見つかりませんでした。A. Array から要素を削除することはできませんが、要素の値を空または null に設定します。しかし、LinkedList、ArrayList、Vectors などの他の効率的なコレクションがあるのはそのためです。

Q. 時間効率の良い方法でそれを行うにはどうすればよいですか? A. 2 つのアレイが必要です。以下のコードを見てください。

それが行うことは、残りのコンテンツを2番目の配列にコピーすることです..効率的な方法で

public int[] removeElement(int[] array, int del)
{
    int[] result = new int[array.length - 1];
    System.arraycopy(array, 0, result, 0, del);
    if (array.length != del)
    {
        System.arraycopy(array, del + 1, result, del, array.length - del - 1);
    }
    return result;
}
于 2013-05-06T14:58:12.980 に答える
0

配列のサイズを変更することはできませんが、小さい配列にコピーすることはできます。

public int[] schrink(int[] input) {
return Arrays.copyOfRange(input, 49, input.length-50);
}
于 2013-05-06T14:09:37.780 に答える