Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 比较两个HashMap整数和字符串_Android_Hashmap - Fatal编程技术网

Android 比较两个HashMap整数和字符串

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(

我得到了两个带有字符串和整数的哈希映射,它们都携带“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");
}
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。