3

私はアンドロイドの初心者です。関数内のバイト配列のサイズを変更したい。それは可能かどうか。問題がある場合は、それを行うための解決策を提案してください。

public void myfunction(){
    byte[] bytes = new byte[1024];
    ....................
    .... do some operations........
    ................................
    byte[] bytes = new byte[2024];
}
4

5 に答える 5

4

Java では配列のサイズを変更できません。Listを使用して、必要なことを行うことができます。

List<Byte> bytes = new ArrayList<Byte>();

もう 1 つの方法は、System.arraycopyを使用することです。その場合、2 番目の配列を作成し、最初の配列の内容をそこにコピーします。

于 2012-05-15T06:21:18.160 に答える
2

それをしてはいけない。ただし、新しい配列を作成し、System.arraycopyを使用して古いコンテンツを新しいコンテンツにコピーすることができます。

于 2012-05-15T06:21:15.023 に答える
2

次のように実行できます。

bytes = new byte[2024];

ただし、古いコンテンツは破棄されます。古いデータも必要な場合は、差分サイズで新しいバイト配列を作成し、System.arrayCopy()メソッドを呼び出してデータを古いものから新しいものにコピーする必要があります。

于 2012-05-15T06:22:50.580 に答える
1

代わりArrayList<Byte>に、Java配列はサイズ変更を許可しませんが、ArrayListsはサイズ変更を許可しますが、少し異なります。サイズを指定することはできません(実際には必要ありません。自動的に行われます)。初期容量を指定できます(含まれる要素の数がわかっている場合は、これをお勧めしArrayListます)。

byte myByte = 0;
ArrayList<Byte> bytes = new ArrayList<Byte>(); //size is 0
ArrayList<Byte> bytes2 = new ArrayList<Byte>(1024); //initial capacity specified
bytes.add(myByte); //size is 1
...

このJavaコレクションのチュートリアルを一読することをお勧めします。

于 2012-05-15T06:20:30.973 に答える