Zum Inhalt springen

Wie erzeuge ich ein byte-array?


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

wie kann ich mit JAVA ein Byte Array aufbauen, wenn ich vorher die Länge noch nicht kenne?

byte[] tapesample; ist klar...

Nur wie kann ich es nun schrittweise erhöhen?

Ich möchte eine Datei erzeugen, wo die Länge noch unbekannt ist.

[Prozedur:]

tapesample = kalkulierter Wert

i++;

JAVA sagt mir hier aber, dass das so nicht geht.

Was kann ich hier machen?

Geschrieben

Ein Byte-Array ist unveränderlich in der Größe, Du musst also ein neues Array initialisieren und die Einträge umkopieren. Verwende doch eine Liste, dann kannst Du problemlos Daten hinzufügen. Und mit der Methode toArray erhältst Du am Ende auch noch ein Array, wenn Du es in dieser Darstellung brauchst.

Peter

Geschrieben
Verwende doch eine Liste, dann kannst Du problemlos Daten hinzufügen. Und mit der Methode toArray erhältst Du am Ende auch noch ein Array, wenn Du es in dieser Darstellung brauchst.

Wie sähe das denn aus? Habe noch nie mit Listen gearbeitet...

Kleines Beispiel wäre cool.

Danke schonmal.

Geschrieben

    public Object[] list()

    {

        Vector vector = new Vector();

        while(ivBlockPos < ivCdtFile.length)

        {

            gotoNextBlock();

            vector.addElement("ID: " + Array.b2x(new byte[] {

                (byte)ivBlockType

            }) + ", pos: " + ivBlockPos + ", len: " + ivBlockLen);

        }

        return vector.toArray();

    }

Wäre dieses so eine Liste?

Geschrieben

Das wäre sicherlich eine Variante. Außerdem gibt es auch noch LinkedList und ArrayList.

Eine ArrayList hält die Daten - wie der Name schon sagt - in einem Array. Das heißt die ist ganz nett wenn du häufig auf verschiedene Einträge zugreifen musst. Aber wenn du ein Element in der ArrayList entfernen magst passiert im Hintergrund natürlich eine ganze Menge (aufrücken der nachfolgenden Elemente evtl. größe des Arrays verkleinern....). Genau das gleiche ist beim einfügen der Fall. Nachfolgende Elemente müssen verschoben werden und das Array ggf. vergrößert werden.

Eine LinkedList hält die Daten hingegen in verketteten Objekten. Dadurch wird beim einfügen/entfernen jeweils nur eine Referenz verändert. Das ist natürlich von der Performance her unendlich viel besser wie bei der ArrayList.

Aber wenn du auf ein bestimmtes Element zugreifen willst wird es hier leicht problematisch, denn die Liste muss dann mit einem counter durchgegangen werden.

Wie ein Vector funktioniert weiß ich jetzt spontan leider nicht, aber du siehst schon: es kommt immer drauf an, was man mit den Listen machen will.

Da sowohl Vector, ArrayList als auch LinkedList Implementationen von List sind ist der Zugriff immer der gleiche (wobei die jeweiligen Listen natürlich auch ein paar spezifische Methoden mitbringen, die man nutzen kann).

Geschrieben

Vielen Dank nochmal.

Ich habe es also hinbekommen.

Nun eine Frage:

Damit mein Programm vernünftig läuft, habe ich diesen Parameter gesetzt:

-Xms512m -Xmx768m -XX:MaxPermSize=256m

Wie kann ich den Parameter auch in HTML-Code setzen, wenn ich das Ganze als Applet laufen lasse?

Das Programm selber ist self-signed, allerdings müsste ich auch im Applet den Heap-Space erweitern. Ist das möglich?

Geschrieben

JRE-Parameter:

Da ein Applet vom Browser zum User geladen wird und dort durch die installierte JRE aufgerufen wird, kann man meines Wissen keinen Einfluss auf die Speichergröße nehmen.

Hinweis am Rande:

Wenn sehr viele Elemente eingefügt und wieder gelöscht werden sollen und das nicht nur am Angang und am Ende, dann gibt es nur eine performante Technik und das ist mittels LinkedList. Bei allen anderen müssen Abstriche gemacht werden.

Eine oft verwendete Alternative zum ständigen Vergrößern einer ArrayList oder Vector ist, bereits beim Instanziieren die Elementanzahl zu übergeben.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...