我正在编写一个函数来测试HashMap是否具有空值。方法.values()应该只返回值的集合,但是相反,我收到一个包含键和值的映射。这不好,因为我的函数的目的是检查值是否为null,但是如果我返回包含键AND值的映射,则如果我存储的键没有值,则.values()。isEmpty()返回false。
public Map<KEY, List<VALUES>> methodName() {
if (MAPNAME.values().isEmpty()) {
throw new CustomErrorException(ExceptionHandler.getErrorWithDescription(ErrorConstants.ERROR_MSG_01));
} else {
return MAPNAME;
}
}
在上面的示例中,.values()始终返回包含所有键和值的映射。如果HashMap有一个键,则我的方法永远不会抛出CustomErrorException,这很不好,因为它应该检测是否没有值。帮助!
没有Map实现这样的东西,它存储的键没有值。所有Map实现:
put
中引发异常映射为null的键与没有值的键非常不同。键具有一个值,并且该值为null(这意味着values集合将不会为空,除非映射为空)。没有值的键是未包含在映射中的键。
长话短说,您可能想使用MAPNAME.values().contains(null)
或什至只用MAPNAME.containsValue(null)
做您想做的事情。另外,如果要检查every
您将返回地图-MAPNAME,而不是值:
如果要确定映射是否包含任何空值,则应遍历值的集合并检查每个值是否为空。
您对想要的不是很清楚-映射值是列表-考虑到,有三种方法可以将键映射设置为“无值”:
以这种方式使用values()方法:-集合set = MAPNAME.values();