繁体   English   中英

HashMap 行为怪异

[英]HashMap behaving weird

import java.io.*;
import java.util.*;
class Solution {
    public static void main (String[] args) {
        HashMap<Integer, Integer> map = new HashMap<>();
        long sq = 16;
        int v = 8, u = 2;
        int ans = 0;
        map.put(u, map.getOrDefault(u, 0) + 1);
        ans += map.getOrDefault(sq/v, 0);
        
        System.out.println(ans);
    }
}

答案显然应该是 1,但它输出的是 0。知道它为什么会这样吗? 或者我错过了什么?

sq/vlong除以int ,因此结果是long ,当传递给map.getOrDefault(sq/v,0)时,它被装箱为Long 您的Map没有Long键,因此它返回默认值0

如果将sq更改为intsq/v的结果也将为int ,并且map.getOrDefault(sq/v,0)将返回 1。

地图需要输入 java.lang.Integer 作为键

改成这样:

ans += map.getOrDefault(Integer.valueOf((int) (sq/v)), 0);

注意:原始数据类型int也可以使用。

这也将起作用:

ans += map.getOrDefault((int) (sq/v), 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM