-5

Java 有不同for的循环来遍历列表。例如:

public void myMethod(List list) {
    for (int i = 0; i <= list.size(); i++) {
        ...
    }
}

或者,我们可以这样写:

public void myMethod(List list) {
    for (String obj : list) {
        ...
    }
}

或者,我们可以使用列表迭代器:

public void myMethod(List list) {
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
        ...
    } 
}

哪一个是最好的并且NullPointerException无需更多代码就可以防止 s ?

4

2 回答 2

3

您的第二个变体是最好的(它基本上等同于您的第三个,但不那么冗长)。它优越的原因是因为你通过循环而不是多次Iterator调用,因为你必须与你的第一个变体做。get()例如LinkedList,对于 sget()是一个O(n)操作,这意味着第一个片段是,而第二个片段是。O(n2)O(n)

在 的情况下null,所有三个变体都会抛出一个NullPointerException; 您应该事先检查null(或确保您的列表永远不会是null)。

于 2013-08-09T19:00:12.920 回答
0

在我看来,第二种形式更好,因为它更短。在封面后面,它与您的第三种形式相同。

没有一种形式可以防止空指针异常。

于 2013-08-09T19:01:57.270 回答