Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wie erzeuge ich ein byte-array?

Empfohlene Antworten

Veröffentlicht

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?

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

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

  • Autor

    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?

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

  • Autor

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?

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.