я получил два HashMaps со строками и целыми числами, и оба они несут «20» и 20 Когда я пытаюсь сравнить их с помощью ToString() я всегда получаю неравенство:сравнить два HashMap Integer и струнный
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");
}
Когда я использую Integer.valueOf() для струнного HashMap он работает хорошо, и они равны:
if(nums.get(id) == Integer.valueOf(vals.get("num")))
и, конечно, следующая запись doens't работу на всех в пути мне нужно:
num.get(id).equals(vals.get("num"))
Поэтому вопрос в том, почему мой первый бит кода не работает (как я и ожидал)?
Вы используете один и тот же ключ для каждой записи хэш-карты? – Blackbelt
фактически нет. nums хранит только идентификаторы записей, а vals сохраняет значения для одной записи, включая ее идентификатор под клавишей «num». – kolyaseg