[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); }
この例で少し注意が必要なのは、valとit.nextの間の同等性テストです。NullPointerExceptionを防ぐために、nullのval値を特殊なケースにする必要があります。
NullPointerExceptionを防ぐために、なぜnullのval値を特殊なケースにする必要があるのか疑問に思っています。NullPointerExceptionを防ぐために安全なコードを作成する必要があることは理解できますが、そのコード行は
if (val == null ? it.next() == null : val.equals(it.next()))
はコレクションの反復とは関係ありませんが、代わりにvalパラメーターはparametersメソッドでのみ指定されます。
上記の説明を事前に感謝します。