当前位置: 首页 > 知识库问答 >
问题:

合并操作中的HashMap空检查

范志勇
2023-03-14

为什么HashMap merge要对值进行null检查。HashMap支持null键和null值。那么有谁能告诉我为什么需要在合并时进行null检查吗?

@Override
public V merge(K key, V value,
               BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
    if (value == null)
        throw new NullPointerException();
    if (remappingFunction == null)
        throw new NullPointerException();

共有1个答案

罗梓
2023-03-14

因为在内部,对于collectors.tomap,使用了map#merge-您实际上无法对其做任何处理。使用静态Collectors.tomap不是一个选项(顺便说一句,它会引发NullPointerException)。

但是旋转一个自定义收集器以使其能够执行您想要的操作(您没有显示)并不是那么复杂,下面是一个示例:

 Map<Integer, Integer> result = Arrays.asList(null, 1, 2, 3)
            .stream()
            .collect(
                    HashMap::new,
                    (map, i) -> {
                        map.put(i, i);
                    },
                    HashMap::putAll);
 类似资料:
  • 主要内容:使用how参数合并Pandas 提供的 merge() 函数能够进行高效的合并操作,这与 SQL 关系型数据库的 MERGE 用法非常相似。从字面意思上不难理解,merge 翻译为“合并”,指的是将两个 DataFrame 数据表按照指定的规则进行连接,最后拼接成一个新的 DataFrame 数据表。  merge() 函数的法格式如下: pd.merge(left, right, how='inner', on=

  • sunion key1 key2...keyN 返回所有给定key的并集 sunionstore dstkey key1...keyN 同sunion,并同时保存并集到dstkey下

  • powershell中是否有空合并运算符? 我希望能够在powershell中执行以下c#命令:

  • PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有给定 HyperLogLog 进行并集计算得出的。 命令的复杂度为 O(N) , 其中 N 为被合并的 HyperLogLog 数量, 不过这个命令的常数复杂度比较高。

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1723

  • 问题内容: 我有一个程序需要合并两个。哈希图的键为a ,值为。合并的特殊条件是,如果键已在字典中,则需要将其添加到现有值中而不是替换它。这是我到目前为止抛出的代码。 问题答案: 如果您的代码不能保证会在到达此方法之前将其初始化,则您将必须执行null检查,没有出路 考虑到HashMap允许将null作为值在代码中容易发生NPE的另一个位置是 如果这两个都不为空,则将获得NPE。