Android 比较两个HashMap整数和字符串
我得到了两个带有字符串和整数的哈希映射,它们都携带“20”和20 当我试图使用toString()比较它们时,我总是得到不平等性:Android 比较两个HashMap整数和字符串,android,hashmap,Android,Hashmap,我得到了两个带有字符串和整数的哈希映射,它们都携带“20”和20 当我试图使用toString()比较它们时,我总是得到不平等性: HashMap<String, String> vals = HashMap<String, String>(); HashMap<Integer, Integer> nums = HashMap<Integer, Integer>(); if(nums.get(id).toString() == vals.get(
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");
}
HashMap vals=HashMap();
HashMap nums=HashMap();
if(nums.get(id).toString()==vals.get(“num”)){
Log.i(标记“DataBase.updateOrder():编号相同”);
}否则{
Log.i(标记“DataBase.updateOrder():编号已更改”);
}
当我对字符串HashMap使用Integer.valueOf()时,它运行良好,并且它们相等:
if(nums.get(id)=Integer.valueOf(vals.get(“num”))
当然,以下记录根本不能满足我的需要:
num.get(id).equals(vals.get(“num”))
因此,问题是为什么我的第一位代码不起作用(正如我预期的那样)?在比较字符串时使用此
.equals
if(nums.get(id).toString().equals(vals.get("num"))) {
Log.i(TAG, "DataBase.updateOrder(): number is the same");
}
如果将字符串解析为int,则可以使用整数比较而不是字符串比较:
if(nums.get(id) == Integer.parseInt(vals.get("num"))) {
嗯,这相当简单:
通过“==”进行比较时,比较对象在内存中的位置。如果要确保“==”
是做正确的事情,你需要以某种方式将一个指向另一个(不是完美的表达方式)。另一方面,Equals尝试计算对象内容的比较。
更多关于我刚才在下面的链接中解释的内容如果您想了解更多关于如何在类中实现自己的equals的信息,请阅读此处。
我希望我回答了您的问题。您对hashmap的每个条目都使用相同的键吗?实际上没有。nums只保留记录的ID,VAL保留一条记录的值,包括“num”键下的ID。