Java In 2 Listen gleichen Wert mit add()

Hallo zusammen,

ich steh mal wieder auf dem Schlauch und finde meinen Fehler absolut nicht.
Ich habe mir 2 Listen angelegt: list1 und list2.
Aus einer Funktion bekomme ich eine weitere List übergeben, die in listRückgabe gespeichert wird.

Nun ist folgendes Problem, wenn ich

list1.add(listRückgabe.get(0));
list2.add(listRückgabe.get(0));

ist list1 leer. Wieso geht mir der Wert verloren?
Kann mir jemand helfen, dass in beiden Listen der Wert erhalten bleibt. Ich brauche beide Listen für die Weiterverarbeitung.

Danke schonmal im Vorraus

Sandra S

Nun ist folgendes Problem, wenn ich

list1.add(listRückgabe.get(0));
list2.add(listRückgabe.get(0));

ist list1 leer. Wieso geht mir der Wert verloren?

Da meine Glaskugel leider gerade defekt ist…

Kann mir jemand helfen, dass in beiden Listen der Wert
erhalten bleibt. Ich brauche beide Listen für die
Weiterverarbeitung.

… brauchen wir zur Beantwortung deiner Frage mehr Informationen. Würdest du bitte so gut sein, und uns erstmal sagen, von welchen Typen deine ganzen Variablen (list1,
list2, listRückgabe) sind und wie die instantiiert wurden?
Auch wäre es gut zu wissen, wie du überhaupt feststellst, ob die Listen dann leer/voll sind. Langer Rede kurzer Sinn: Wir brauchen mehr Code, so dass wir dein Problem ganz nachvollziehen können.

BTW: Umlaute in Variablen-Namen sind nicht sonderlich sinnvoll.

Hallo,

dass mit den Umlauten ist mir schon klar, ist ja auch nur ein Beispiel, im Programm habe ich sprechende Namen.

Also nochmal:

List list1 = null;
List list2 = null;
List listRückgabe;

listRückgabe = //Funktionsaufruf

list1.add(listRückgabe.get(0));
list2.add(listRückgabe.get(0));

Der Wert der bei .get(0) zurückgegeben wird ist ein von mir entworfener Datentyp.

Wie ich herausbekomme dass die Liste leer ist? Indem ich sie mit System.out.println ausgeben lasse.

Eigentlich habe ich jetzt die gleichen Infos wie vorher geliefert, aber vllt funktioniert deine Glaskugel ja jetzt wieder.

LG Sandra

Ach wenn ich

list2.add(listRückgabe.get(0));
list1.add(listRückgabe.get(0));

mache, dann ist list2 im Anschluss leer und nicht mehr list1.

Also nochmal:

List list1 = null;
List list2 = null;
List listRückgabe;

listRückgabe = //Funktionsaufruf

list1.add(listRückgabe.get(0));
list2.add(listRückgabe.get(0));

Wie ich herausbekomme dass die Liste leer ist? Indem ich sie
mit System.out.println ausgeben lasse.

Das ist natürlich wichtig zu wissen, weil vielleicht sind die Listen ja nicht leer, wenn du einen Fehler bei der Ausgabe hast. Das kann man aber nur beurteilen, wenn man deinen Code sieht.

Eigentlich habe ich jetzt die gleichen Infos wie vorher
geliefert, aber vllt funktioniert deine Glaskugel ja jetzt
wieder.

Nein, weil dein obiger Code so oder so Fehler enthält. Das Programm würde bei Zeile :list1.add(listRückgabe.get(0));
mit einer NullPointerException abstürzen, weil list1 dort auf null steht und gar nicht initialisiert ist.

Also Glaskugel noch nicht einsatzbereit :wink:
Poste doch mal den kompletten relevanten Code, also alles was irgendwie mit list1, list2 und listRueckgabe zu tun hat. Also alles von der Instantiierung bis zur Ausgabe.

So wie in diesem Beispiel hier, das tadellos funktioniert und wo das erste Element der zurückgegebenen Liste wunderbar am Ende in list1 und list2 drin ist.

import java.util.\*;

public class Test {

 public static void main(String[] argv) {
 List list1 = new ArrayList();
 List list2 = new ArrayList();
 List listRueckgabe = gibListeZurueck();

 list1.add(listRueckgabe.get(0));
 list2.add(listRueckgabe.get(0));

 System.out.println("List1: " + list1);
 System.out.println("List2: " + list2);
 }

 private static List gibListeZurueck() {
 return Arrays.asList(new String[] { "a", "b", "c"});
 }

}

In diesem Beispiel würde das ganze tadellos funktionieren, d.h. in list1 und list2 wäre am Ende das erste Element aus listRueckgabe. So wie du es willst. Die Ausgabe des Programms ist dann:

&> java Test
List1: [a]
List2: [a]

Guten Tag,

Ich hab das Problem jetzt irgendwie anders gelöst bekommen.
Das war eben mein ganzer Code dazu. Eine NullPointerException kam auch nicht.
Trotzdem Danke für deine Hilfe

Auch wenn Du es schon gelöst hast noch eine Anmerkung dazu.

List list1 = null;
List list2 = null;
List listRückgabe;

Wenn das Objekt null ist, kannst Du keinen Funktionsaufruf drauf ausführen, also auch kein .add
Wenn das bei Dir funktioniert, inizialisierst Du zwischendurch irgendwo die Variablen und verrätst es uns nicht.

listRückgabe = //Funktionsaufruf

list1.add(listRückgabe.get(0));
list2.add(listRückgabe.get(0));

Ich finde in der Java API nur eine awt Liste, (die hat keine get-Methode) und ein Interface List. Das hat ein get, aber da es ein Interface ist, muß es eine selbstgeschriebene Klassendefinition davon geben, die Du uns auch nicht genannt hast.

Der Wert der bei .get(0) zurückgegeben wird ist ein von mir
entworfener Datentyp.

Den Du uns auch nicht verrätst…

Wie ich herausbekomme dass die Liste leer ist? Indem ich sie
mit System.out.println ausgeben lasse.

Die Liste läßt sich darüber ausgeben? Oder ein Objekt daraus? oder ein toSting() auf das Objekt?

Eigentlich habe ich jetzt die gleichen Infos wie vorher
geliefert, aber vllt funktioniert deine Glaskugel ja jetzt
wieder.

Aus den genannten Gründen nicht.
Ich will Dich nicht ärgern, aber wenn Du solche Informationen nicht mitlieferst, kann Dir in der Regel auch niemand helfen.