如果在if条件下使用,则hashmap的isEmpty()和size()之间有什么区别?

Rad*_*ssi 1 java

我必须处理NullPointerException正在发生的情况Hashmap。我应该在条件内使用map.isEmpty()或(map.size() > 0if吗?

哪一个更好?

Tim*_*sen 6

下面是实现size()isEmpty()HashMap类:

public int size() {
    return size;
}

public boolean isEmpty() {
    return size == 0;
}
Run Code Online (Sandbox Code Playgroud)

因此,HashMap#isEmpty()只需检查返回的相同size变量size()。它主要只是一种方便的方法。您可能想使用isEmpty()手动比较大小的原因之一是前者使您的代码实际检查的内容更加清楚。

  • +1,但是 `isEmpty()` 不一定 * 只是 * 一种方便的方法:它由 `java.util.Map` 指定,并且在该接口的至少一个实现中(即 [`java.util.concurrent.Map`] )。 ConcurrentSkipListMap`](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentSkipListMap.html)) 它比 `size()` 快得多。 (2认同)

Dea*_*ool 5

首先对Map对象进行空检查,然后Empty检查以避免NullPointerException

if(map != null && !map.isEmpty())
Run Code Online (Sandbox Code Playgroud)