直接来自 [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 之间的相等性测试。您需要对 null 的 val 值进行特殊处理,以防止出现 NullPointerException。
我想知道为什么我们需要对 null 的 val 值进行特殊处理以防止出现 NullPointerException。我可能理解我们必须保护代码以防止 NullPointerException 但是那行代码
if (val == null ? it.next() == null : val.equals(it.next()))
与集合迭代无关,而是仅在parameters方法中指定了val参数。
提前感谢您对上述内容的任何澄清。