如何从HashMap检索值的集合

问题描述 投票:-1回答:5

我正在编写一个函数来测试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,这很不好,因为它应该检测是否没有值。帮助!

java list map hashmap
5个回答
4
投票

没有Map实现这样的东西,它存储的键没有值。所有Map实现:

  • 当值为空时在put中引发异常
  • 添加具有键和空值的条目
  • 映射为null的键与没有值的键非常不同。键具有一个值,并且该值为null(这意味着values集合将不会为空,除非映射为空)。没有值的键是未包含在映射中的键。

长话短说,您可能想使用MAPNAME.values().contains(null)或什至只用MAPNAME.containsValue(null)做您想做的事情。另外,如果要检查every

键是否映射为null,请通过遍历.values()集合来进行检查。

1
投票

您将返回地图-MAPNAME,而不是值:


0
投票

如果要确定映射是否包含任何空值,则应遍历值的集合并检查每个值是否为空。


0
投票

您对想要的不是很清楚-映射值是列表-考虑到,有三种方法可以将键映射设置为“无值”:


0
投票

以这种方式使用values()方法:-集合set = MAPNAME.values();

© www.soinside.com 2019 - 2024. All rights reserved.