以下が機能しない理由を誰かに説明してもらえますか (滑走路は Hibernate PersistentSet です)。
System.out.println("size before " + runways.size());
Iterator<Runway> deleteIterator = runways.iterator();
while (deleteIterator.hasNext()) {
Runway rwy = deleteIterator.next();
if (rwy == rwy3) {
System.out.println("remove !");
deleteIterator.remove();
}
}
System.out.println("size after " + runways.size());
system.Out ログを取得します。
INFO: size before 3
INFO: remove !
INFO: size after 3
イテレータによる削除は安全で可能だと思いました。ログ「削除」が表示されます。remove() メソッドが呼び出されたことを示します。
EDIT : PersistentSet には、Iterator インターフェイスからの remove メソッドに問題があります。