7

以下のユースケースではCollectionUtils.isNotEmpty(coll)なく、使用するための多くのアドバイスもあります。coll != null

if (CollectionUtils.isNotEmpty(coll)) {
    for (String str : coll) {
    }
}

それ以外の

if (coll != null) {
    for (String str : coll) {
    }
}

CollectionUtils.isNotEmpty(coll)ここでその他の代わりに使用する理由/利点はありますか? ありがとう。

4

4 に答える 4

8

ここには本当の利点はありません。あったとしても、極めて小さい。Iterator分岐命令の作成と実行を防止するだけです。それだけです。

この小さな利点は、コレクションが空の場合にのみ発生します。次のループ:

for (String str : coll) {
   ...
}

次と同等です。

for (Iterator<String> iterator = col.iterator(); iterator.hasNext();) {
   String str = iterator.next();
   ...
}

コレクションが空の場合、チェックをオンにCollectionUtils.isNotEmpty(coll)すると、ループが実行されなくなります。したがってIterator、メモリ内に no が作成され、への呼び出しhasNext()は行われません。O(1)これは、 への呼び出しを犠牲にしていますcoll.isEmpty()

于 2015-06-05T12:28:33.917 に答える
5

逆コンパイルすると明らかになる

public static boolean isEmpty(Collection coll) {
    return coll == null || coll.isEmpty();
}
于 2015-06-05T12:31:23.583 に答える
1

問題は、コレクションがnullでない場合でも、コレクションが空になる可能性があることです。したがって、あなたの場合、何を選択するかは好みによって異なります。

于 2015-06-05T12:27:14.570 に答える