Directement de [http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html]
public static <E> void replace(List<E> list, E val, E newVal) {
for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
if (val == null ? it.next() == null : val.equals(it.next()))
it.set(newVal); }
La seule astuce dans cet exemple est le test d'égalité entre val et it.next. Vous devez mettre dans un cas spécial une valeur val de null pour éviter une NullPointerException.
Je me demande pourquoi il faut mettre en cascade une valeur nulle pour éviter une NullPointerException. Je peux comprendre que nous devons sécuriser le code pour éviter une NullPointerException mais cette ligne de code
if (val == null ? it.next() == null : val.equals(it.next()))
n'est pas lié à l'itération de la collection, mais le paramètre val est spécifié uniquement dans la méthode des paramètres.
Merci d'avance pour toute clarification concernant ce qui précède.