Hallo
ich habe ein kleoines Verständnisprolem.
Wenn ich in einem Objekt eine Variable des Typs ArrayList erstelle, und diese dann an ein Objekt weiter gebe, dann kann das Objekt diese bearbeiten.
Mit add klappt alles super. Wenn aber eine neue ArrayList des selben Typs erstellt wird und diese dann der übergebenen Variable zugewiesen wird, dann werden die Werte nicht übergeben.
Ein kleines Beispiel siehe unten. Gibt es dafür eine Lösung bzw. könnte mir jemand erklären warum dies der Fall ist?
[HIGHLIGHT="Java"]package test;
import java.util.ArrayList;
import java.util.List;
/**
* @author Kris
*
*/
public class Main {
private List<String> strings;
/**
*
*/
public Main(){
strings =new ArrayList<String>();
gebeAus();
new Child(this, strings).aendereStrings();
gebeAus();
new Child(this, strings).erneuere();
gebeAus(); // keine Ausgabe, da die Werte verlorengegangen sind
}
/**
*
*/
public void gebeAus(){
for(int i=0;i<strings.size();i++){
System.out.println(strings.get(i));
}
}
/**
* @param args
*/
public static void main(String[] args) {
new Main();
}
}[/CODE]
ich habe ein kleoines Verständnisprolem.
Wenn ich in einem Objekt eine Variable des Typs ArrayList erstelle, und diese dann an ein Objekt weiter gebe, dann kann das Objekt diese bearbeiten.
Mit add klappt alles super. Wenn aber eine neue ArrayList des selben Typs erstellt wird und diese dann der übergebenen Variable zugewiesen wird, dann werden die Werte nicht übergeben.
Ein kleines Beispiel siehe unten. Gibt es dafür eine Lösung bzw. könnte mir jemand erklären warum dies der Fall ist?
[HIGHLIGHT="Java"]package test;
import java.util.ArrayList;
import java.util.List;
/**
* @author Kris
*
*/
public class Main {
private List<String> strings;
/**
*
*/
public Main(){
strings =new ArrayList<String>();
gebeAus();
new Child(this, strings).aendereStrings();
gebeAus();
new Child(this, strings).erneuere();
gebeAus(); // keine Ausgabe, da die Werte verlorengegangen sind
}
/**
*
*/
public void gebeAus(){
for(int i=0;i<strings.size();i++){
System.out.println(strings.get(i));
}
}
/**
* @param args
*/
public static void main(String[] args) {
new Main();
}
}[/CODE]
Code:
package test;
import java.util.ArrayList;
import java.util.List;
/**
* @author Kris
*/
public class Child {
private List<String> strings;
private Main main;
/**
* @param main
* @param strings
*/
public Child(Main main, List<String> strings) {
this.main = main;
this.strings = strings;
for (int i = 0; i < 20; i++) {
strings.add("Test" + i);
}
}
/**
*
*/
public void aendereStrings() {
for (int i = 0; i < strings.size(); i++) {
strings.set(i, strings.get(i) + "A");
}
main.gebeAus();
}
/**
*
*/
public void erneuere() {
List<String> neueListe = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
neueListe.add("ZZ" + i);
}
strings = neueListe;
}
}[/HIGHLIGHT]
Zuletzt bearbeitet von einem Moderator: