首页 > 解决方案 > 为什么使用 getValue() 和 get() 时 java 整数不相等

问题描述

为什么我需要额外的步骤来使其 intValue 以使它们相等?

是不是因为它在比较它是否是同一个对象?

        Map<Integer, Integer> m1 = new HashMap<Integer,Integer>();
        Map<Integer, Integer> m2 = new HashMap<Integer,Integer>();

        m1.put(1, 1000);
        m2.put(2, 1000);

        for (Map.Entry<Integer,Integer> mmm : m1.entrySet()) {
            if (mmm.getValue() == m2.get(2)) {
                 System.out.println("I should be equal");
            }
            if (mmm.getValue().intValue() == m2.get(2).intValue()) {
                 System.out.println("but im equal");
            }
        }

标签: java

解决方案


是的,声明

mmm.getValue() == m2.get(2)

检查两者是否引用同一个对象,而不是它们中的值。要比较值,也可以这样做:

Map<Integer, Integer> m1 = new HashMap<Integer,Integer>();
    Map<Integer, Integer> m2 = new HashMap<Integer,Integer>();

    m1.put(1, 1000);
    m2.put(2, 1000);

    for (Map.Entry<Integer,Integer> mmm : m1.entrySet()) {
        if (mmm.getValue().compareTo(m2.get(2)) == 0) {
             System.out.println("I should be equal");
        }
        if (mmm.getValue().intValue() == m2.get(2).intValue()) {
             System.out.println("but im equal");
        }
    }

推荐阅读