相关疑难解决方法(0)

HashMap返回未找到键的默认值?

是否可以为HashMap集合中找不到的所有键返回默认值?

java dictionary hashmap

136
推荐指数
8
解决办法
13万
查看次数

为什么Java API在if语句中有看似奇怪的赋值?

我是编程和Java的新手.我注意到,在Java API中,if语句中有一些奇怪的赋值方法.

以下是Map界面的示例:

default V replace(K key, V value) {
    V curValue;
    if (((curValue = get(key)) != null) || containsKey(key)) {
        curValue = put(key, value);
    }
    return curValue;
}
Run Code Online (Sandbox Code Playgroud)

以这种方式嵌套赋值是否有某种好处?这纯粹是一种风格选择吗?为什么不在curValue第一次声明时进行赋值?

// why not do it like this?
default V replace(K key, V value) {
    V curValue = get(key); // not nested
    if (curValue != null || containsKey(key)) {
        curValue = put(key, value);
    }
    return curValue;
}
Run Code Online (Sandbox Code Playgroud)

我在Map界面和其他地方的许多新添加的Java 8方法中都注意到了这一点.这种嵌套分配的形式似乎是不必要的.

编辑:Map界面中的另一个示例:

default V computeIfAbsent(K key,
        Function<? super K, ? extends …
Run Code Online (Sandbox Code Playgroud)

java java-8

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

标签 统计

java ×2

dictionary ×1

hashmap ×1

java-8 ×1