小编lv.*_*lv.的帖子

是否可以使用键列表实例化Map?

通常,如果我事先知道地图的所有键,我会像这样实例化它:

    List<String> someKeyList = getSomeList();
    Map<String, Object> someMap = new HashMap<String, Object>(someKeyList.size());

    for (String key : someKeyList) {
        someMap.put(key, null);
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法直接这样做而不需要遍历列表?有效的东西:

new HashMap<String, Object>(someKeyList)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是直接编辑地图的键集,但不支持该操作.还有其他方式我可以俯瞰吗?

java dictionary

5
推荐指数
1
解决办法
62
查看次数

为什么findbugs会在此代码中抛出空指针取消引用?

我通过Sonarqube在我们的代码上运行findbugs,我得到一个空指针取消引用的错误:

有一个语句分支,如果执行,则保证将取消引用空值.

错误的代码就是这样:

public static boolean isBigDecimalDifferent(BigDecimal x, BigDecimal y) {
        return (x != null || y != null)
                && ((x != null && y == null) || (x == null && y != null) || x.compareTo(y) != 0);   
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是怎么可能的.唯一可以实现NPE的地方是调用x.compareTo(y),但如果x = null,那么Java永远不会分析那个分支,对吗?

这是一个错误,还是我错过了Java分析这个语句的方式?


UPDATE

感谢您的投入.我最后建议他们改变它:

if (x!=null && y != null)
    return x.compare(y);
else
    return x!=y;
Run Code Online (Sandbox Code Playgroud)

我觉得有点清楚.如果没有人同意这个改变,我会按照建议做,只是忽略这个问题,即使我宁愿避免这个.

java findbugs

1
推荐指数
1
解决办法
525
查看次数

标签 统计

java ×2

dictionary ×1

findbugs ×1