ArrayList Objekt -> verkettete Liste

Status
Nicht offen für weitere Antworten.

Reen

Bekanntes Mitglied
Hallo!


Mal ne Frage. Die hängt immer noch bissl mit den Themen bzw. den anderen Treads zusammen.

Und zwar gehts immer noch darum, eine ArrayList in eine verkettete Liste zu schreiben. Dazu funt auch erstma soweit.
Was jetzt aber mein Problem ist, soll ich für jede ArrayList das ich in die verk. Liste schreibe immer ein neues ArrayList Objekt anlegen oder kann ich das alte verwenden.

Code:
ArrayList[] al = new ArrayList[100000];
		
		for (int i=0; i<anzahlint; i++)
			{	
				
				al[i] = new ArrayList();
				
				eintrag.getBytes(0, 5, namefield, 0);
				al[i].add(namefield);
				al[i].add(startp);
				al[i].add(endep);
				al[i].add(nextc);
				al[i].add(index);
		    	
		    	liste.fuegeNach(al);
		    	System.out.println(i);

oder so

Code:
		for (int i=0; i<anzahlint; i++)
			{	
				
				ArrayList al = new ArrayList();
				
				eintrag.getBytes(0, 5, namefield, 0);
				al.add(namefield);
				al.add(startp);
				al.add(endep);
				al.add(nextc);
				al.add(index);
		    	
		    	liste.fuegeNach(al);
		    	System.out.println(i);

Der Unterschied ist, wenn ich dann die Liste bzw. die einzelenen Knoten in einen Datei schreibe, dann verbraucht die 2.te Variante viel weniger Speicherplatz. Komisch ist bei der 2.ten Varianete auch, egel wieviel Einträge ich in die Liste speichern will, immer nur ein Objekt reingeschrieben wird. Also die Datei ist komischerweise immer gleich groß. Ist für mich irgendwie unlogisch. Trotz immer gleichem Array Objekt, sollte doch jeder Knoten dieses Objekt zugewiesen bekommen und in der Datei gespeichert werden.

Bin ich also gezwungen 1.te Variante zu nehmen. Prob ist eben hierbei, dass ich immer eine konstante Arraygröße z.B. ArrayList[100000] wissen muss. Klar, ich könnte diese groß genug definieren, aber liegt da der Sinn drin?

Wer kann mir hierbei ma weiterhelfen?

Danke
Reen

EDIT: Die 1.te Variante dauert auch ziemlich lange, wenn ich da z.B. 10000 Elemente in die Datei schreiben möchte. Gibts ne Möglichkeit das alles erst im Speicher zu erstellen und dann mit einma in die Datei zu klatschen?
 

Leroy42

Top Contributor
Die 2. Variante ist auf jeden Fall richtig.

Aber ich verstehe nicht wieso dann nur ein Objekt rauskommt! ???:L

Poste mal den Code der Klasse von der liste eine Instanz ist
und den Code mit dem du in die Datei schreibst.
 

Reen

Bekanntes Mitglied
OKi...wird jetzt aber vllt bissl viel. Ist jetzt die 1.te Variante !!

Code:
import java.util.ArrayList;
import java.io.*;


public class Kettentest implements Serializable
{

	private static final long serialVersionUID = 1L;

public static void main(String[] args)
  { 
	String eing, anzahl; 
	String name[] = new String[10];
	String eintrag = "$free";
	int anzahlint, start;
	byte[] index = new byte[4];
	byte[] namefield = new byte[155];
	byte[] startp = new byte[4];
	byte[] endep  = new byte[4];
	byte[] nextc = new byte[4];
	
	Kette liste = new Kette ();
	
	BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
	BufferedReader anzahlk = new BufferedReader(new InputStreamReader(System.in));
	
	try {
		System.out.print("Anzahl der Kettenelemente? ");
		anzahl = anzahlk.readLine();
		anzahlint = Integer.parseInt(anzahl); 
		
		
		
		for (int i=0; i<anzahlint; i++)
			{	
				
            indexzahl = (new Integer(i)).toString();
            len = indexzahl.length();
            ArrayList al = new ArrayList();
				indexzahl.getBytes(0, len, index, 0);
				eintrag.getBytes(0, 5, namefield, 0);
				
				al.add(namefield);
				al.add(startp);
				al.add(endep);
				al.add(nextc);
				al.add(index);
		    	
		    	liste.fuegeNach(al);
		    	System.out.println(i);
		    	
		    	
			}
		} 
	catch (IOException e1) {

		e1.printStackTrace();
	}
	
    
    try {
		
		while (true)
	    {	
			System.out.print("Eingabe: ");
	    	eing = eingabe.readLine();
	    	char auswahl = eing.charAt(0);   
	    	
	    	switch (auswahl)
	    	{	case 'a': liste.ausgeben();
	    					break;
	    					
	    		case 's': liste.durchsuchen("Eintrag 3");
	    					break;
	    		
	    		case 'q': System.exit(0); 
	    	} 
	    }
	} catch (IOException e) {
		
		e.printStackTrace();
	}

  }
}

Code:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Vector;
import java.util.ArrayList;


class Kette implements Serializable                                    
	{                                           
	 
	private static final long serialVersionUID = 1L;
	
	public Knoten kopf = new Knoten("kopf");
	   
	 	  
	  public Kette()                            
	  {                                         
		kopf.vorgaenger = null;
		kopf.naechster = null;
	  }                                         


	  public void fuegeNach(Object neuObj) throws FileNotFoundException, IOException 
	  {   
		  Knoten aktuellerKnoten = kopf;
		  Knoten akt_vorgaenger  = kopf.vorgaenger;
		    
		  ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream( "MyObjs.txt" ));
		  
		  while (aktuellerKnoten != null)                
		    {
		      akt_vorgaenger  = aktuellerKnoten;
		      aktuellerKnoten = aktuellerKnoten.naechster;
		    }
		  
		  Knoten neuKnoten = new Knoten(neuObj);
		  
		  akt_vorgaenger.naechster = neuKnoten;
		  
		  out.writeObject(neuKnoten);
	      //out.flush();
	      
	     
	  }

     public void ausgeben() throws IOException, ClassNotFoundException
	  {    	
		Knoten aktuellerKnoten = kopf;
	    Knoten akt_vorgaenger  = kopf.vorgaenger;
	    ArrayList v;
	    
	    while (aktuellerKnoten != null)                
		    {
		      //System.out.println("Aktueller Knoten: " + aktuellerKnoten.element);    
		   	
		      if (aktuellerKnoten.element instanceof ArrayList) 
		  		{ 	
		  			v = (ArrayList) aktuellerKnoten.element;
		  			String index = new String(((byte[])(v.get(0))));
		  			String namef = new String(((byte[])(v.get(1))));
			    	System.out.print(index);
			    	System.out.print(namef);
		  		}
		         
		      akt_vorgaenger  = aktuellerKnoten;
		      aktuellerKnoten = aktuellerKnoten.naechster;
		      
		      System.out.println();  
		    }                                                 
	  } 		
	
}


class Knoten implements Serializable                 
{                            
  private static final long serialVersionUID = 1L;
  
  public Knoten naechster;    
  public Knoten vorgaenger;
  
  public Object element;
                        
  
  public Knoten(Object obj)   
  {                           
    element = obj;            
    naechster = null;
  }          
}
 

Reen

Bekanntes Mitglied
Ich glaube ich habe den Fehler gefunden. Wenn ich die Funktion zum Knoten erstellen aufrufe, dann wird die Datei immer neu erstellt und deshalb kommt es zu diesem Ereignis.

Nur wo klatsche ich das "ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream( "MyObjs.txt" ));" am besten hin bzw. muss ich der Funktion verhindern, dass er die alte Datei nich immer überschreibt, sondern immer nur öffnet und weiterschreibt.

Danke
Reen


EDIT: Ich glaube ich hab's jetzt! Trotzdem danke
 

Reen

Bekanntes Mitglied
Hallo Hallo!


Ich muss folgendes Thema nochma aufgreifen. Und zwar habe ich mir jetzt ein Ausgabe gebastelt, damit ich auch sehen, was in den einzelnen ArrayLists in den einzelnen Listenelementen drin steht.

Also im groben klappt das schon z.B. das Schreiben der Knoten mit Inhalt in die Datei. Nur die Ausgabe funzt nich wirklich. Ich habe beim Ausgeben der Liste immer nur das letzte ArrayList Objekt in allen ListenElementen. Wie kann denn das sein? Das liegt doch sicher daran, dass ich die ganze Zeit auf dem gleichen Objekt arbeite. Trotzdem haben doch eigentlich die einzelnen Listenelemente unterschiedliche Werte drin. Zumindest in der Datei, wo ich das ja reinschreibe.

Wo liegt denn der Fehler? Habe den Code oben abgeändert. Wer sich das mal anschauen möchte, brauch nur Copy $ Paste machen :lol:

Prob ist ja, wenn ich das dann wieder deserialisieren möchte, habe ich eventuell wieder das gleiche Prob oder würde vor dem Ausgeben der Liste ein deserialisieren reichen? Wäre aber auch schwachsinnig!

Danke
Reen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
CptK Datentypen Objekt lässt sich nicht zu arraylist hinzufügen Java Basics - Anfänger-Themen 2
C Bestimmtes Objekt einer ArrayList in einer Methode selektieren Java Basics - Anfänger-Themen 8
D ArrayList mit eigenem Objekt Java Basics - Anfänger-Themen 6
T Von einer Methode zurückgegebenes Objekt in einer ArrayList ansprechen Java Basics - Anfänger-Themen 5
W Nullpointer bei Objekt Serialisierung mit ArrayList<byte[]> etc. Java Basics - Anfänger-Themen 2
J ArrayList Objekt löschen Java Basics - Anfänger-Themen 6
J ArrayList nimmt ständig nur das letzte Objekt auf Java Basics - Anfänger-Themen 2
J Datentypen Objekt aus ArrayList sinnvoll übergeben Java Basics - Anfänger-Themen 9
J Zuordnung von Variablen einem ArrayList-Objekt Java Basics - Anfänger-Themen 18
philipp Auf Objekt einer ArrayList zugreifen Java Basics - Anfänger-Themen 2
G ArrayList mit eigenem Objekt füllen Java Basics - Anfänger-Themen 7
C Arraylist mit string array oder hashmap oder objekt? Java Basics - Anfänger-Themen 5
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
M ArrayList mit Objekt vom Typ GregorianCalendar Java Basics - Anfänger-Themen 3
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
F java.util.ArrayList Java Basics - Anfänger-Themen 3
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Arraylist zu einem Array bringen mit Verschachtelung Java Basics - Anfänger-Themen 11
N Methode mit einer Arraylist Java Basics - Anfänger-Themen 106
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
H ArrayList Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
K Zahlenfolge ArrayList Java Basics - Anfänger-Themen 3
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
F Array in ArrayList ablegen Java Basics - Anfänger-Themen 3
V ArrayList Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben