我遇到了一个问题,如果arraylist中已存在一个对象,我必须检查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!
}
答案 0 :(得分:2)
从我对你的问题的理解,
您正尝试将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
。请参阅文档以了解如何使用它们。