gpt4 book ai didi

Java循环在arraylist中查找对象无法超过index[0]

转载 作者:行者123 更新时间:2023-12-02 03:45:48 25 4
gpt4 key购买 nike

我遇到了一个问题,我必须在 for 循环中检查数组列表中是否已存在对象。当该对象不存在时,我必须创建一个/添加一个。但是我找不到方法来检查这个,因为他总是只检查第一个索引然后关闭,或者他会检查第一个索引并且对象不会匹配,因此我在循环意识到存在一个之前创建了3个重复的对象复制已经太晚了。这是代码:

我真的希望你们能帮忙,我只是找不到解决方案。

    Klas klas = informatieSysteem.getKlasVanStudent(student);         // klascode van de student opzoeken
for (Les l : informatieSysteem.deLessen) {
if (l.getKlas().getKlasCode().contains(klas.getKlasCode()) && l.getStartTijdString().contains(begintijd) && l.getEindTijdString().contains(eindtijd) && l.getDateString().contains(datum) && l.getKlas().getStudentenKlas().contains(student)) {
System.out.println(l);
les = l;
}
}
if (student.getAbsentie().size() == 0) {
student.addabsentie(datum, begintijd, eindtijd, les, student);
} else {
for (int i = 0; i < student.getAbsentie().size(); i++) {//anders controle of dit object voorkomt in lijst.
Absentie ab = student.getAbsentie().get(i);
System.out.println(student.getAbsentie().size());
if(student.getAbsentie().listIterator().next().getLes().equals(les)){
//if ((ab.getLes().getDateString().equals(les.getDateString()))&& (ab.getLes().getStartTijdString().equals(les.getStartTijdString()))&&ab.getLes().getEindTijdString().equals(les.getEindTijdString())) {
System.out.println("niet else");
}else{
student.addabsentie(datum, begintijd, eindtijd, les, student);
break;
}
}
}
JsonArrayBuilder jab = Json.createArrayBuilder();
for(Absentie ab: student.getAbsentie()) {
// Uiteindelijk gaat er een array...
jab.add(ab.getLes().getDateString());
}
conversation.sendJSONMessage(jab.build().toString()); // terug naar de Polymer-GUI!
}

最佳答案

根据我对你问题的理解,

您正在尝试添加Absentie实例到您的ArrayList (存在于 Student 实例中)。并且,为了避免重复,您将尝试检查该特定实例是否已存在。

ArrayList有一个contains为其定义了方法,因此您无需像这样循环遍历并检查它。 contains方法调用 equals对象中定义的方法来匹配给定的记录。所以,你只需要确保 override equals Absentie中的方法类并与满足约束的字段进行比较。

    class Absentie{
...
@Override
public boolean equals(Absentie absentie){
//Define your equality condition here
}
}

当尝试检查数组是否已包含时。

    Absentie absenties = student.getAbsentie();
if(!absenties.contains(absentie){
student.addAbsentie(absentie);
}

此外,您不应该使用 Iterators像那样。请参阅文档以了解如何使用它们。

关于Java循环在arraylist中查找对象无法超过index[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com