java - HashMap 给出错误的结果
问题描述
HashMap<Integer, Integer> hmap = new HashMap<>();
hmap.put(1,(int)128);
hmap.put(2,(int)128);
if((hmap.getOrDefault(2, -1)!=hmap.getOrDefault(1, -1)) {
System.out.println("wrong");
}
System.out.println(hmap.get(2)+" "+hmap.get(1));
if(hmap.get(2)==hmap.get(1))
{
System.out.println("wrong2");
}
控制台上面的代码输出是错误的上面的情况,输出应该是错误的2
如果我将值类型转换为 int,那么它会将输出显示为错误2
HashMap<Integer, Integer> hmap = new HashMap<>();
hmap.put(1,(int)128);
hmap.put(2,(int)128);
if((int)hmap.getOrDefault(2, -1)!=(int)hmap.getOrDefault(1, -1)) {
System.out.println("wrong");
}
System.out.println(hmap.get(2)+" "+hmap.get(1));
if((int)hmap.get(2)==(int)hmap.get(1))
{
System.out.println("wrong2");
}
解决方案
如果你有一个对象,在你的情况下是整数,你不应该使用 != 或 == 在这种情况下,你应该使用方法 .equals(),如此处所述https://www.geeksforgeeks.org/difference-等于方法 java/
推荐阅读
- arrays - React:如何从一维数组制作二维数组?
- javascript - DropzoneJs - 上传完成后可以删除“删除链接”
- python - Python 帮助。在文件中查找最大值并打印出值 w 名称
- r - r - if (abs(x - oldx) < ftol) { 中的 mlogit 错误:需要 TRUE/FALSE 的缺失值
- php - 如何在 WordPress 中将汉堡菜单替换为默认菜单?
- encryption - Apache NiFi 写入加密的 SQS 队列
- c - 这个特定函数的时间复杂度 \big(O) 是多少?
- java - 如何在 Java 中并行运行 spark 程序
- c# - 在 localhost 上使用 asp.net core 2.1 身份时,TempData 丢失
- java - 我应该如何使用用户输入存储多维数组中的数组