-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

2 番目のバリアントが最適です (基本的には 3 番目と同等ですが、冗長ではありません)。それが優れている理由は、最初のバリアントで行う必要があるように、複数回Iterator呼び出すのではなく、を介してループしているためです。get()たとえばLinkedList、sget()O(n)操作です。つまり、最初のスニペットは であり、2 番目のスニペットはです。O(n2)O(n)

の場合null、3 つのバリアントすべてがNullPointerException;をスローします。null事前に確認する必要があります(または、リストが絶対にならないことを確認してくださいnull)。

于 2013-08-09T19:00:12.920 に答える