3 Stimmen

Größe eines Byte-Arrays in Android ändern

Ich bin ein Neuling in Sachen Android. Ich möchte die Größe eines Byte-Arrays in Funktion ändern. Ist es möglich oder nicht. Wenn ein Problem bitte eine Lösung vorschlagen, es zu tun.

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

8voto

Hartmut Pfitzinger Punkte 2267

Um den Effekt der Größenänderung eines Byte-Arrays zu erreichen, ohne den Inhalt zu verlieren, gibt es in Java mehrere bereits erwähnte Lösungen:

1) ArrayList<Byte> (siehe die Antworten von a.ch. und kgiannakakis)

2) System.arraycopy() (siehe die Antworten von jimpic, kgiannakakis und UVM)

Etwa so:

byte[] bytes = new byte[1024];
//
// Do some operations with array bytes
//
byte[] bytes2 = new byte[2024];
System.arraycopy(bytes,0,bytes2,0,bytes.length);
//
// Do some further operations with array bytes2 which contains
// the same first 1024 bytes as array bytes

3) Ich möchte noch eine dritte Möglichkeit hinzufügen, die ich für sehr elegant halte: Arrays.copyOfRange()

byte[] bytes = new byte[1024];
//
// Do some operations with array bytes
//
bytes = Arrays.copyOfRange(bytes,0,2024);
//
// Do some further operations with array bytes whose first 1024 bytes
// didn't change and whose remaining bytes are padded with 0

Natürlich gibt es noch weitere Lösungen (z. B. das Kopieren der Bytes in einer Schleife). In Bezug auf die Effizienz, siehe dies

4voto

kgiannakakis Punkte 100768

Sie können die Größe eines Arrays in Java nicht ändern. Sie könnten eine Liste zu tun, was Sie wollen:

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

Eine andere Möglichkeit ist die Verwendung von System.arraycopy . In diesem Fall erstellen Sie ein zweites Array und kopieren den Inhalt des ersten Arrays in dieses.

2voto

jimpic Punkte 5070

Das können Sie nicht tun. Aber Sie können ein neues Array erstellen und System.arraycopy verwenden, um den alten Inhalt in das neue Array zu kopieren.

2voto

UVM Punkte 9715

Sie können das so machen:

bytes = new byte[2024];

Wenn Sie die alten Daten ebenfalls benötigen, müssen Sie ein neues Byte-Array mit einer anderen Größe erstellen und den Befehl System.arrayCopy() Methode, um Daten von der alten in die neue Datei zu kopieren.

1voto

a.ch. Punkte 8120

Utilice ArrayList<Byte> stattdessen erlauben Java-Arrays keine Größenänderung, ArrayLists hingegen schon, aber sie machen es ein bisschen anders. Sie können ihre Größe nicht angeben (eigentlich müssen Sie das auch nicht - es wird automatisch gemacht), Sie können die anfängliche Kapazität angeben (was eine gute Praxis ist, wenn Sie wissen, wie viele Elemente die ArrayList enthalten):

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
...

Ich empfehle Ihnen, sich dies anzusehen Java-Sammlungen-Tutorial .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X