首页 > 解决方案 > 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");
      }

标签: javahashmap

解决方案


如果你有一个对象,在你的情况下是整数,你不应该使用 != 或 == 在这种情况下,你应该使用方法 .equals(),如此处所述https://www.geeksforgeeks.org/difference-等于方法 java/


推荐阅读