# Inhalt Jeiner List speichern und später ausgeben



## Xerxes20 (31. Januar 2011)

Hallo,

ich habe da ein kleines Problem und brauche wiedermal eure Hilfe:

Mir fehlt allgemein die Idee dazu:

Ich habe eine ArrayList mit Objekten. Diese bestehen aus Namen und aus den Inhalten einer JList. Das Problem wie ordne ich einem Objekt mehrere Objekte zu?

Ich habe mir zwar gedacht einfach den ganzen Inhalt der JList zu kopieren und dem Objekt zu geben, aber später wenn ich das Objekt aufrufe und den Inhalt in einer JList ausgeben will, dann würde er das warscheinlich nur in eine Zeile packen


----------



## MiMi (31. Januar 2011)

Du hast Objekte mit einem Namen und einer JList. Wozu ist denn diese? Wenn diese dazu gedacht ist, mehere Objekte zu enthalten, versteh ich das Problem nicht ganz?


----------



## Xerxes20 (31. Januar 2011)

Also mein objekt soll die Elemente die in der JList eingefügt werden enthalten und später ausgeben können undzwar genau in der Reihenfolge wie sie eingegeben wurden. Jetzt dachte ich mir, einfach die JList als String abspeichern und ausgeben.

Das Problem:

Beim ausgeben wird er warscheinlich das ganze was als String abgespeichert wurde in der ersten Zeile anzeigen!


----------



## wakoz (31. Januar 2011)

Hallo,

Sind deine Objekte oder die Listen fest vorgegeben? 

Wenn die Listen fest sind könntest du in den Objekten (Arraylist) eine Children liste erstellen welche die Objekte (Jlist) kennt die dem Zugeordnet sind.

Sind die Objekte Fest aber die Listen nicht würde ich einen JTree Vorschlagen, da gibt es Parent und Children dem Parent kannst du children zuweisen was der Zuordnung gleich kommt wie du sie haben willst.


----------



## wakoz (31. Januar 2011)

Xerxes20 hat gesagt.:


> Also mein objekt soll die Elemente die in der JList eingefügt werden enthalten und später ausgeben können undzwar genau in der Reihenfolge wie sie eingegeben wurden. Jetzt dachte ich mir, einfach die JList als String abspeichern und ausgeben.
> 
> Das Problem:
> 
> Beim ausgeben wird er warscheinlich das ganze was als String abgespeichert wurde in der ersten Zeile anzeigen!


 
achso bei der ausgabe müsstest du doch nur sagen das element x von der liste ausgegeben werden soll also etwas wie

```
foreach (Element element : MeineListe){
   System.out,println(element);
}
```


----------



## Xerxes20 (31. Januar 2011)

hmm, nee sowas hatten wir leider noch nicht (java anfänger )

Was ich mir überlegt habe ist:

Eine ArrayList in den Konstruktor des Objekts zu machen die dann befüllt wird mit dem Inhalt der JList, allerdings, weiß ich nicht wie ich, wenn ich ein leeres neues Objekt erstellen will an der stelle der ArrayList hinschreiben soll.

Also ich habs mir so vorgestellt:

Objekt (Strin,ArrayList)

was schreibe ich wenn ich ein neues leeres erzeugen möchte?

Object ob = new Object("",********)

da liegt mein Problem!


----------



## Xerxes20 (31. Januar 2011)

wakoz hat gesagt.:


> achso bei der ausgabe müsstest du doch nur sagen das element x von der liste ausgegeben werden soll also etwas wie
> 
> ```
> foreach (Element element : MeineListe){
> ...


 
Also die JListe besteht sagen wir mal aus:

HALLO
ICH
MAG DICH 
GERNE

Wenn ich das als String abspeichere und dann in eine neue JList ausgeben möchte, macht er warscheinich:

HALLOICHMAGDICHGERNE

das ist das Problem!


----------



## wakoz (31. Januar 2011)

Xerxes20 hat gesagt.:


> Also die JListe besteht sagen wir mal aus:
> 
> HALLO
> ICH
> ...



Nein das wird er so nicht machen, weil es immer noch einzelne elemente in der Liste sind.
wenn du ohne weitere behandlung der liste die ausgabe machst wird es so aussehen
HALLO ICH MAG DICH GERNE
bin mir gerade nicht sicher ob zwischen die Worte noch ein Trenner kommt oder um die worte eine Klammer

Wenn du änlich wie ich über die Liste gehst wird immer nur ein element aus der liste angefast und nicht alle zusammen.

dann würe es so aussehen
HALLO
ICH
MAG
DICH
GERNE


----------



## Xerxes20 (31. Januar 2011)

Okay können wir dann schritt für schritt vorangehen?

Also dann soll mein Konstruktor doch folgendermaßen aussehen:

Objekt (String,Strings (aus der JList))

so wenn ich das habe wie mache ich weiter?


----------



## wakoz (31. Januar 2011)

Ich habe mal ein kleines Beispiel gebastelt


```
import java.util.ArrayList;

public class ListenBeispiel {
	
	String s1 = "HALLO"; 
	String s2 = "ICH"; 
	String s3 = "MAG";
	String s4 = "DICH";
	String s5 = "GERNE";

	
	public ListenBeispiel() {
		ArrayList<String> liste = new ArrayList<String>();
		
		liste.add(s1);
		liste.add(s2);
		liste.add(s3);
		liste.add(s4);
		liste.add(s5);
		
		MeinObject meinObject = new MeinObject("Gustaf", liste);
		
		meinObject.gebeAllesZusammenAus();
		meinObject.geballesEinzelAus();
	}
	
	public static void main(String[] args) {
		new ListenBeispiel();
	}
	
}
```


```
import java.util.ArrayList;


public class MeinObject {
	
	private ArrayList<String> liste;
	private String s;
	
	public MeinObject(String s, ArrayList<String> liste2) {
		this.s = s;
		this.liste = liste2;
	}
	
	public void gebeAllesZusammenAus(){

		System.out.println(liste);
//		for (int i = 0; i >= liste.; i++){
//			
//		}
	}

	public void geballesEinzelAus(){
		for (String s : liste) {
			System.out.println(s);
		}
	}
	
}
```

Problem JList wollte eben keine Strings aufnehmen daher habe ich eine ArrayList verwendet.

wenn du die Liste bei der Objekt Erzeugung übergeben willst sollte sie bereits fertig sein! 
Alternativ könnte es so aussehen


```
import java.util.ArrayList;


public class MeinObject {
	
	private ArrayList<String> liste;
	private String s;
	
	public MeinObject(String s) {
		this.s = s;
		liste = new ArrayList<String>();
	}
	
	public void addstringZuListe(String str){
		liste.add(str);
	}
	
	public void gebeAllesZusammenAus(){

		System.out.println(liste);
	}

	public void geballesEinzelAus(){
		for (String s : liste) {
			System.out.println(s);
		}
	}
	
}
```


```
import java.util.ArrayList;

public class ListenBeispiel {
	
	String s1 = "HALLO"; 
	String s2 = "ICH"; 
	String s3 = "MAG";
	String s4 = "DICH";
	String s5 = "GERNE";

	
	public ListenBeispiel() {
		MeinObject meinObject = new MeinObject("Gustaf");
		
		meinObject.addstringZuListe(s1);
		meinObject.addstringZuListe(s2);
		meinObject.addstringZuListe(s3);
		meinObject.addstringZuListe(s4);
		meinObject.addstringZuListe(s5);
		
		meinObject.gebeAllesZusammenAus();
		meinObject.geballesEinzelAus();
	}
	
	public static void main(String[] args) {
		new ListenBeispiel();
	}
	
}
```
so kannst du nachträglich elemente an die Liste anfügen


die ausgabe sieht in beiden fällen so aus


> [HALLO, ICH, MAG, DICH, GERNE]


 für die ausgabe der liste



> HALLO
> ICH
> MAG
> DICH
> GERNE


für die ausgabe der einzelnen listen inhalte


----------



## Xerxes20 (31. Januar 2011)

hallo,

es hat wunderbar geklappt,

aber jetzt habe ich ein anderes Problem:

undzwar wenn ich immer wieder ein neues Objekt erstelle wird der Inhalt der Inhalt von jedem Objekt umgeändert. 

Das heißt:

Objekt 1: 

Name : Susi

JList:

WEINT
IST TRAURIG
HAT PROBLEME

Bis dahi klappt es wunderbar! Aber wenn ich ein zweites hinzufüge, wird der Inhalt vom diesen zwar angezeigt, aber irgendwie ist dann das was susi sagt auch weg, und der Text vom letzten eingefügten Objekt wird Susi hinzugefügt!

Wo liegt da mein Fehler?

Den Code hier einzufügen wäre nicht schlau! Denn ich habe über 10 Klassen !


----------



## wakoz (31. Januar 2011)

ich nehme an du erzeugst susi

mit 
	
	
	



```
DeinObject object = new DeinObject("Susi")
//machst etwas und dann
object = new Object("gustav");
```

wenn du auf object weiter arbeitest wird alles was du damit machst susi zugeordnet

wenn du ein zweites object anlegen willst

müsstest du DeinObject anderesobject = new DeinObject("gustav")

um weiter zu arbeiten ohne das was susi macht verloren geht.

oder Susi irgendwo ablegen (zum Beispiel in einem Array)
und dann auf object weiter arbeiten mit object = new DeinObject("gustav"); 


die klasse die Susi erzeugt währe interessant


----------



## Xerxes20 (31. Januar 2011)

Habs geschafft, es lag an static


----------



## wakoz (31. Januar 2011)

Ob es schwierig ist ist ansichts sache 

Arrays kanst du per index ansprechen deinarray[index] gibt nur das feld welches mit dem index erreichbar ist, sofern das feld existiert. den inhalt also das array im array kannst du genauso erreichen. UNd die darin enthaltene liste geht es ähnlich.


----------

