大家早上好,
在编写 GUI 时,我遇到了 Arraylist 的问题。 在我的 Vereniging 类中,有一个包含 Persoon 对象的 ArrayList,这些对象是 Lid 或 Medewerker。 现在我需要的是从该列表中过滤所有 Lid 对象,并使用 Lid 对象创建一个新的 Arraylist。 有谁知道这是否可能? 我尝试运行增强的 for 循环并将对象添加到新的 Arraylist,但它说数据类型不符合(尝试将 Persoon 添加到 Lid 列表)
类(class);
维伦尼辛
public class Vereniging {
private String naam;
private ArrayList<Persoon> personen;
private ArrayList<Vliegtuig> vliegtuigen;
private ArrayList<Vlucht> vluchten;
private ArrayList<Hangaar> hangaars;
private DataHandler handler = new Database();
public Vereniging(String naam){
this.naam = naam;
personen = new ArrayList<>();
vliegtuigen = new ArrayList<>();
vluchten = new ArrayList<>();
hangaars = new ArrayList<>();
}
public ArrayList<Persoon> getPersonen() {
return personen;
}
人
public abstract class Persoon implements Comparable<Persoon>{
private String voornaam;
private String tussenvoegsel;
private String achternaam;
private String woonplaats;
private String geslacht;
private String rekeningnr;
Persoon(String voornaam, String tussenvoegsel, String achternaam, String
woonplaats,
String geslacht, String rekeningnr){
this.voornaam = voornaam;
this.tussenvoegsel = tussenvoegsel;
this.achternaam = achternaam;
this.woonplaats = woonplaats;
this.geslacht = geslacht;
this.rekeningnr = rekeningnr;
}
盖子
public class Lid extends Persoon {
private String gebnaam;
private String wachtwoord;
private String rol;
public Lid(String voornaam, String tussenvoegsel, String achternaam, String woonplaats, String geslacht,
String rekeningnr, String gebnaam, String wachtwoord, String rol) {
super(voornaam, tussenvoegsel, achternaam, woonplaats, geslacht, rekeningnr);
this.gebnaam = gebnaam;
this.wachtwoord = wachtwoord;
this.rol = rol;
}
最佳答案
您可以使用类型比较运算符:instanceof
。它可以让您比较变量是否是类(或子类)的实例。
请参阅以下示例,该示例迭代 personen
列表,然后使用 instanceof
确定它是否确实是 Lid
的实例或不:
List<Lid> lids = new ArrayList<>();
for(Persoon persoon : personen){
if(persoon instanceof Lid){
// safe cast and add to lids
lids.add((Lid) persoon);
}
}
如果您碰巧使用 Java 8,您可以使用新的 Stream API:
List<Lid> lids = personen.stream() // create a stream of persoonen
.filter(Lid.class::isInstance) // equivalent to using instanceof
.map(Lid.class::cast) // equivalent to casting
.collect(Collectors.toList()); // creating a list
关于java - 将 Arraylist 与抽象对象转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564966/