Liste auf eine andere Liste kopieren?

2 Antworten

List<Person> p2 = new ArrayList<>(p1);

Das würde gehen, wenn du einer Klasse ein Interface hinzufügst.

Beispiel

public class Person1 implements IPerson {

}

public class Person2 implements IPerson {

}

Dann kannst du folgendes machen

List<IPerson> p1 = new ArrayList<>();
List<IPerson> p2 = new ArrayList<>(p1);

Das ganze einmal ohne Interface

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


public class Test {


	public class Person1 {
		private String name;
		private int alter;


		public Person1(String name, int alter) {
			this.name = name;
			this.alter = alter;
		}
	}


	public class Person2 {
		private String name;
		private int alter;


		public Person2(String name, int alter) {
			this.name = name;
			this.alter = alter;
		}
	}
	
	public List<Person1> p1 = new ArrayList<>();
	public List<Person2> p2 = new ArrayList<>();
	
	public void test() {
		p1.forEach(person -> {
			p2.add(new Person2(person.name, person.alter));
		});
	}


}
Woher ich das weiß:Berufserfahrung – Freiberuflicher Java Entwickler mit 10 Jahren Erfahrung
Fujin261 
Fragesteller
 28.06.2021, 22:09

Ja, aber wir haben zwei verschiedene Klassen mit gleichen Parameter und müssen übergeben , aber weiß nicht wie es geht.

0
Xearox  28.06.2021, 22:10
@Fujin261

ich habe noch was hinzugefügt. Reicht das? Oder arbeitet ihr noch nicht mit Interfaces?

1
Fujin261 
Fragesteller
 28.06.2021, 22:13
@Xearox

Wir arbeiten mit Interfaces aber das ist etwas komplizierter bei uns und zwar p1 ist in einem Packet und p2 in anderem , ich habe gedacht man holt alles aus p1 mit Iterator und speichert in p2

0
Xearox  28.06.2021, 22:16
@Fujin261

Naja, mach einfach ein leeres Interface.

public interface IPerson {}

Mehr muss da nicht rein. Dann kannst der Klassen Person1 und Person2 einfach das Interface hinzufügen. Fertig.

Du kannst natürlich auch mit einem Iterator machen. Ich editiere meine Antwort in kürze, dann kannst du nochmal schauen.

1
Xearox  28.06.2021, 22:25
@Fujin261

So, ich habe meine Antwort nochmal editiert. Versuch das jetzt mal so. Du musst natürlich Getter noch anlegen und statt .name .getName() machen, da bei dir die Variablen Name und Alter private sind und nicht public und auch nicht in der gleichen Klasse.

1

Erzeuge eine leere Liste von Personen und geh dann mit einer for-Schleife die erste Liste durch. Erstelle für jede Person eine neue Person2 mit den Parametern und füge sie der Person2-Liste hinzu.