比较两个HashMap Integer和String

时间:2014-09-22 10:44:28

标签: android hashmap

我有两个带有字符串和整数的HashMaps,它们都带有“20”和20 当我试图使用toString()来比较它们时,我总是得到不平等:

HashMap<String, String> vals = HashMap<String, String>();
HashMap<Integer, Integer> nums = HashMap<Integer, Integer>();

if(nums.get(id).toString() == vals.get("num")) {
    Log.i(TAG, "DataBase.updateOrder(): number is the same");
} else {
    Log.i(TAG, "DataBase.updateOrder(): number has changed");
}

当我对String HashMap使用Integer.valueOf()时,它运行良好并且它们是相同的:

if(nums.get(id) == Integer.valueOf(vals.get("num")))

当然,以下记录在我需要的方式上根本不起作用:

num.get(id).equals(vals.get("num"))

所以问题是为什么我的第一部分代码不起作用(正如我所料)?

3 个答案:

答案 0 :(得分:0)

在比较字符串时使用此.equals

if(nums.get(id).toString().equals(vals.get("num"))) {
    Log.i(TAG, "DataBase.updateOrder(): number is the same");
}

答案 1 :(得分:0)

你可以比较一下,如果将String解析为int,那么你有一个整数比较而不是字符串比较:

if(nums.get(id) == Integer.parseInt(vals.get("num"))) {

答案 2 :(得分:0)

嗯,这很简单: 当你用&#34; ==&#34;进行比较时你比较对象&#39;记忆中的位置。如果你想确定&#34; ==&#34; 正在做一件你需要的东西,以某种方式将一个指向另一个(不是完美的说法)。另一方面,等于尝试计算对象的比较&#39;内容。 更多关于我刚刚在下面的链接中解释的内容。
http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/
如果您想要阅读更多关于如何在您的课程上实现自己的平等的信息,请阅读此处 http://tutorials.jenkov.com/java-collections/hashcode-equals.html
我希望我回答你的问题。