![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Den1s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
Имею несортированных два хэшмапа:
hashmap1.toString() - {name=Name, last_name=Last, address=Home} hashmap2.toString() - {last_name=Last, address=Home,name=Name} как мне их сравнить? equals() естесственно выдает что они не равны, но мне надо сравнить так чтобы они сравнивались вне зависимости от сортировки. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Самый нехитрый способ - написать свое сравнение:
1) Сравниваем количество элементов в хм1 и хм2. Если длина хм1 (и хм2) равна 0, то они мапы равны. Если количества элементов не равны, то хм1 не равен хм2. 2) Выбираем (с удалением) очередной элемент из хм1. 3) Ищем эквивалентный ему в хм2. Если находим, то удаляем эквивалентный из хм2. 4) Идем на шаг 1. при этом, поскольку будет операция удаления, нужно учесть, что коллекции нужно восстановить к прежнему виду. |
|||
|
||||
| Den1s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
Реализовал следующим способом
|
|||
|
||||
| niasilil |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
Ты зря не сравнил количество элементов. Одна строчка кода и во многих случаях процессор не будет молотить бестолку. -------------------- SCJP 5.0, SCJD |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
У тебя аж две ошибки в коде. 1. ты два раза вызываешь it.next(), и соответвенно у тебя будут возвращаться разные объекты. Т.е. фактически ты сравнишь только половину объектов, да еще и рискуешь получить NullPointerException. 2. ты неправильно проверяешь что ключ есть в Map m2.get(it.next()) != null. Если в качестве значения используется null, то ты считаешь, что они не равны, а это не так. Да и вообще это все надо, если у всех Map нормально определен метод equals(). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |