2014-09-22 4 views
0

я получил два 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"))

Поэтому вопрос в том, почему мой первый бит кода не работает (как я и ожидал)?

+0

Вы используете один и тот же ключ для каждой записи хэш-карты? – Blackbelt

+0

фактически нет. nums хранит только идентификаторы записей, а vals сохраняет значения для одной записи, включая ее идентификатор под клавишей «num». – kolyaseg

ответ

0

используйте этот .equals в вашем сравнении строку.

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

Ogh! не думал) – kolyaseg

0

вы можете сравнить, если вы разобрать строку в междунар, то есть целое сравнение вместо с сравнения строк:

0

Ну, это довольно просто: , если сравнивать по «==» вы сравниваете местоположение объектов в памяти. Если вы хотите быть уверенным, что «==» делает правильную вещь, вам нужно как-то указать друг на друга (не идеальный способ сказать). Равны с других рук пытаются вычислить сравнение содержимого объектов. Подробнее о том, что я только что объяснил по ссылке ниже.
http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/
Если вы хотите узнать больше о том, как реализовать свои собственные равные на своих классах, прочитайте здесь.
http://tutorials.jenkov.com/java-collections/hashcode-equals.html
Надеюсь, я ответил на ваш вопрос.

Смежные вопросы