Wie erstellen Sie ein array von byte-arrays in java
Ich möchte ein array erstellen, die der byte[]
.
Wenn ich versuche:
byte[] data = new byte[10];
Dies ist ein array von byte
und nicht ein array von byte[]
.
Dank
byte[][] data = new byte[10][10]
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Verwirrung über die "arrays von arrays" - und 2D-arrays:
Java nicht wirklich 2D-arrays. Zumindest nicht so, wie viele Menschen von Ihnen denken, wo sehen Sie aus wie eine matrix, und Sie Spalten und Zeilen und die gleiche Anzahl der Elemente in jeder Zeile.
Du kann Verwendung eines "array of arrays" als 2D-array. Wenn Sie möchten, ein array von 5 x 8-Integer, man kann sagen,
Aber in Java nicht durchsetzen, die "matrix-ness" oder "2D-ness" eines Arrays. Was es gibt Sie ist ein array von 5 Referenzen, von denen jede bezieht sich auf eine andere Integer-array. Jede Referenz beginnt unter Bezugnahme auf ein array von 8 ganzen zahlen, aber dieses wird nicht erzwungen; Sie konnte später sagen
oder
und nun das array ist nicht mehr wirklich ein 2D-array (wie wir in der Regel denken es), aber Java wird Sie nicht davon abhalten, das zu tun.
So, während Sie vielleicht oft sehen, so etwas wie
verwendet in Lehrbüchern erstellen Sie ein 2D-array, es ist die gleiche syntax wie ein array von arrays und Java eigentlich behandelt es als ein array von arrays, von denen nicht alle haben die gleiche Größe.
Wenn Sie möchten, erstellen Sie ein array, dessen Elemente werden schließlich arrays, aber das sind
null
für jetzt, Sie können es so machen:setzt
bytesArray
auf ein array von 10null
Referenzen, von denen jeder einzelne könnte später gesetzt werden:Das wäre der Weg, um zu starten, wenn Sie möchten, eine "ragged array" (array von arrays, die nicht alle die gleiche Länge.
In Java ein array, wobei jedes element selbst ein array ist effektiv nur ein 2D-array, auch wenn Java nicht erforderlich, dass jede Zeile die gleiche Anzahl von Elementen.
In diesem speziellen Fall, wo Sie eine
List<byte[]>
und Sie möchten sich zu drehen, die in einem array, wobei jedes element des Arrays ist selbst einbyte
array, das Sie verwenden könnten:oder, kurz und bündig, aber weniger offensichtlich:
welche im Einsatz aussieht:
Beachten Sie, dass in beiden Fällen über die Elemente des Arrays sind genau die gleichen arrays als derer in der Liste, nicht auf eine Kopie. Deshalb, wenn Sie ändern die original
byte[]
Elemente in der Liste, es wird auch ändern Sie die version mit Zugriff über das array.Versuchen Sie dies:
byte [] [] - arrays = new byte[5][10];
byte[]
ist - ein 2D-arrayByte
zubyte
und ich werde upvote deine Antwort, wie ist es sonst zu korrigieren. (Und hoffentlich die drei downvoters kopieren Anzug, oder zumindest erklären sich selbst.)byte
, nichtByte
- nicht sicher, wie Sie Sie verwenden.toArray
(wenn denn das möglich ist) mit einem primitiven.Meinst du wie diese?
byte
ist, und kein array vonbyte[]
byte[]
ist - ein 2D-array! Ich werde re-öffnen Sie Ihre Frage und aufwendigeIn deinem Beispiel, erstellen Sie ein array von bytes, wenn Sie wollte erstellen Sie ein array von arrays von bytes, die Sie erstellen müssen eine zwei-dimensionales array von Byte:
byte[][] bytesArray = new byte[10][10];
Würden Sie dann in der Lage sein, um Zugriff auf Ihre array von bytes ist wie folgt:
bytesArray[0]; //returns a byte[]