单个操作来检查密钥并获取Java Map

时间:2014-11-10 08:33:31

标签: java map primitive

我想检查Map<Integer, Integer>是否包含特定的key。如果它存在于Map中,则检索其对应的值。但它需要两个操作,如下所示。首先使用containsKey()检查密钥是否存在。第二个操作是使用get()进行检索。

    int value = 0;
    if(pageMap.containsKey(key)) {
        value = pageMap.get(key);
    }

因此我将int替换为Integer,以便我可以捕获get()返回的值并检查null。如果为null,则跳过IF块,否则执行块内的代码。我不确定这是否是正确的方法,即使用Object Reference数据类型代替primitive数据类型,以最大限度地减少对Map的多次查询。这种方法的任何替代方案。

    Integer value;
    if((value = pageMap.get(key)) != null){            
        //execute code
    }

2 个答案:

答案 0 :(得分:2)

使用Java 8+,您可以使用:

int value = pageMap.getOrDefault(key, 0);

答案 1 :(得分:0)

你的代码是正确的,但我宁愿把它写成:

Integer value = pageMap.get(key);
if (value != null) {
    // do something
}

地图真正包含的内容是对Integer个对象的引用,因此除了少量库调用之外,还有更少的魔法&#34;一般来到这里。