問題が発生しました。オブジェクトがすでにarraylistに存在する場合、forループをチェックインする必要があります。オブジェクトが存在しないときは、作成する必要があります。しかし、私はこれをチェックする方法を見つけることができません。なぜなら、彼は常に最初のインデックスをチェックしてシャットダウンするか、最初のインデックスとオブジェクトが一致しないことをチェックします。したがって、ループが実現する前に3つの複製オブジェクトを作成します。それは遅すぎる。ここにコードです:arraylistでオブジェクトを見つけるためのJavaルーピングが過去のインデックスを取得する[0]
私は本当にあなたが解決策を得ることはできません私たちは助けてくれることを願っています。あなたの質問の私の理解から、
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!
}
'ArrayList'の代わりに' Set'を使いたいかもしれません。次に、オブジェクトが存在するかどうかをチェックする必要はありません。重複はありません。 https://docs.oracle.com/javase/7/docs/api/java/util/Set.html – Atri
'for(Absentie ab:student.getAbsentie()) 'を使用してください。listIteratorが何をしているのかわかりませんコードでそれはちょっと読みにくいです。たぶんあなたはリファクタリングし、最初にそれをきれいにするべきです。 –
は 'equ'(les)に設定された' les'変数ですか?どこ? –