已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > Java

标题: [已解决]debug奇闻怪事HashMap之containsValue();

作者: @Ta

时间: 2022-03-23发布,2022-03-23修改

点击: 2902

提问:为什么用containsValue();判断HashMap是否包含字符串“憨憨”,返回值却是true???

    public static void main(String[] args) {
        HashMap hm =new HashMap();
//        hm.put(1000,"张飞");
         hm.put(1001,"刘备");
//        hm.put(1002,"关羽");
        boolean res2 = hm.containsValue("憨憨"); // true
        System.out.println(res2);
    }

奇闻怪事求助:
为了缩小范围,判断条件不变:“憨憨”,
一次只放入一条key-value键值对,结果如下:
张飞:憨憨 // false
刘备:憨憨 // true
关羽:憨憨 // true


[隐藏样式|查看源码]


『回复列表(7|隐藏机器人聊天)』

1.

@TabKey9,你的JDK有Bug吧,我的运行结果是false:
图片.png

(/@Ta/2022-03-23 14:07//)

2.

虽然更好的写法是
HashMap<Integer, String> hm = new HashMap<>();
没有类型检查警告。

图片.png

(/@Ta/2022-03-23 14:09//)

3.

当然也有可能是因为乱码,放进字符串里的其实是一堆问号,两边都是问号所以就存在了。你再把内容遍历输出一下看看是不是原始内容。

(/@Ta/2022-03-23 14:11//)

4.

我的java是在这里运行的:https://lightly.teamcode.com/

(/@Ta/2022-03-23 14:12//)

5. jdk版本是多少
(/@Ta/2022-03-23 14:39//)

6. @老虎会游泳,谢谢万能虎,3楼的情况,我注意到了文件编码是GBK,遍历出来确实是?问号,转换成UTF-8,一切正常
(/@Ta/2022-03-23 15:47//)

7. @deed,java version 1.8.0_201
(/@Ta/2022-03-23 15:49//)

回复需要登录

9月8日 00:55 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1