Dickes Problem mit Arrays/Arraylists

bwun

Grünschnabel
Hallo,
ich brauche nochmal Eure Hilfe:

Ich lese in meinem Programm ein spezielles Dateiformat ein, dessen Inhalt (viele Objekte mit Eigenschaften, verschiedener Klassen) in ein Array gespeichert werden sollen. Das funktioniert auch einwandfrei, solange es nur um zweidimensionale Objekte geht. Nun habe ich aber auch 3dimensionale Objekte/Arrays ([Klasse][Objektnummer][Eigenschaften]), wobei die Objektzahl von Klasse zu Klasse unterschiedlich ist. Zuerst habe ich es so definiert
Code:
float [][][] LibArray=new float [Klasse][Objekt][Eigenschaft];
, aber da ich dann eine größe vorgeben mußte, konnte ich es nicht beliebig erweitern/ verkleiner und beim speichern des Formats habe ich dann leere Objekte mit drin bzw. es macht alles unnötig kompliziert.

So gehts weiter:
Code:
if (numberofobjects[i] != 0) {
            for (int l = 0; l < numberofobjects[i]; l++) {
              for (int k = 0; k < 6; k++) {
                byte1 = in.readUnsignedByte();
                byte2 = in.readUnsignedByte();
                byte3 = in.readUnsignedByte();
                byte4 = in.readUnsignedByte();
                LibArray[i][l][k] = (readFloatLittleEndian(byte1, byte2, byte3,
                  byte4));
                if ( ( (LibArray[i][l][0] == 0.0) && (LibArray[i][l][1] == 0.0) &&
                      (LibArray[i][l][2] == 0.0) && (LibArray[i][l][3] == 0.0) &&
                      (LibArray[i][l][4] == 0.0) && (LibArray[i][l][5] == 0.0)) |
                    l == 100) {
                  break;
                }
              }
            }
           LibArrayList.add(LibArray[i]);
          }
        } {

Also habe ich das nochmal in eine Arraylist gepackt, an anderer Stelle/Klasse wandle ich mir das in eine brauchbare Arraylist zum verändern um mit

Code:
float LibArray[][][] = (float[][][]) leseKlasse.LibArrayList.toArray(new float[
            0][0][0]);
Das ist ja irgendwie alles Müll, oder? Ich kann irgendwie nicht auf die floats beim Schreiben zugreifen und sonst auch nicht, es sei denn ich mache mir wieder ein neues Array

Wie kann ich das richtig und besser machen? Bitte dringend um Hilfe! Wie kann man Arrays veränderbar etc. machen?

gruß

börri
 
Hallo!

ich glaube du suchst sowas:

Code:
package de.tutorials;

import java.util.ArrayList;
import java.util.List;

public class ArrayTest {

	public static void main(String[] args) {

		List list = new ArrayList();

		for (int i = 0; i < 10; i++) {
			float[][][] fs = {
					{ { 1.0F * i, 1.0F * i, 1.0F * i },
							{ 2.0F * i, 2.0F * i, 2.0F * i },
							{ 3.0F * i, 3.0F * i, 3.0F * i } },
					{ { 4.0F * i, 4.0F * i, 4.0F * i },
							{ 5.0F * i, 5.0F * i, 5.0F * i },
							{ 6.0F * i, 6.0F * i, 6.0F * i } } };

			list.add(fs);
		}

		Object[] o = list.toArray();
		for (int i = 0; i < o.length; i++) {
			float[][][] fa = (float[][][]) o[i];
			for (int j = 0; j < fa.length; j++) {
				for (int k = 0; k < fa[j].length; k++) {
					for (int l = 0; l < fa[j][k].length; l++) {
						System.out.print(fa[j][k][l]);
						System.out.print(" ");
					}
					System.out.println();
				}
				System.out.println();
			}
			System.out.println();
		}
	}
}

Gruß Tom
 
Danke Tom für die schnelle Antwort,

es sieht fast so aus, ich probiere es direkt mal aus! Kannst Dir nicht vorstellen, was ich schon für Sachen aus Verzweiflung ausprobiert habe! Wenn ich dann Elemente entfernen oder hinzufügen will, mache ich das dann direkt an dem Objekt o oder muss ich das ganze immer wieder machen?

gruß

börri
 
Hallo!

list.add(...) fügt in meinem Beispiel Elemente zur Liste hinzu ...
mit list.remove(...) könntest du ein Element entfernen.

list.toArray() liefert mir nur eine Array representation der Liste ... damit ich schneller drüber interieren kann. Veränderungen in o haben KEINEN Einfluss auf list.

Gruß Tom
 
Zurück