我有两个带有字符串和整数的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"))
所以问题是为什么我的第一部分代码不起作用(正如我所料)?
答案 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
我希望我回答你的问题。