检查映射中的所有值是否为空

Llu*_*nez 1 java map

我需要检查地图中的所有值是否为空,我有这个方法,如果可能的话我想用内置的方法替换.限制:Java 5和访问Apache Commons库.

/* Checks if all values are null */
public static boolean isEmpty(Map<Dboid,?> aMap){

    boolean isEmpty = true;

    Iterator<?> it = aMap.entrySet().iterator();

    while(it.hasNext() && isEmpty){
        Object value = it.next();
        if(value != null) {
            isEmpty = false;
        }
    }

    return isEmpty;
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*iff 7

我知道这个问题是针对 Java 5 的,但是对于那些像我一样从谷歌搜索来到这里的人:

对于 Java >= 8,您可以执行以下操作:

boolean allValuesAreNull = yourMap.values()
        .stream()
        .allMatch(Objects::isNull);
Run Code Online (Sandbox Code Playgroud)

有一个细微差别:它将true用于空地图。


kap*_*pex 6

另一种解决方案,不使用任何第三方库.

Collections.frequency(aMap.values(), null) == aMap.size()
Run Code Online (Sandbox Code Playgroud)