I think I have a problem in my code, but I can't find why.
When I'm using chemin.next() its working fine.
But when I do new_chemin.addAll(chemin.next());
I have a NoSuchElementException
public Zone cherche_chemin(List<List<Zone>> chemins, List<Zone> zones_exclues, Zone zone_arrivee) {
boolean new_way = false;
for (Iterator<List<Zone>> chemin = chemins.iterator(); chemin.hasNext();) {
List<Zone> zones = chemin.next().get(chemins.size() - 1).getVoisinsAccessible(zones_exclues);
for (Zone test_zone : zones) {
new_way = true;
if (test_zone == zone_arrivee) {
return chemin.next().get(1);
} else {
List<Zone> new_chemin = new ArrayList<>();
enw_chemin.addAll(chemin.next()); // THIS LINE
new_chemin.add(test_zone);
chemins.add(new_chemin);
zones_exclues.add(test_zone);
}
}
chemin.remove();
}
if (new_way) {
return cherche_chemin(chemins, zones_exclues, zone_arrivee);
} else {
return null;
}
}
note
iterator.next()
move to next element immediately. change to like this