Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/55: Рейтинг темы: голосов - 55, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 20

Как могло получиться два одинаковых ключа в HashMap?

29.08.2015, 12:33. Показов 10674. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я буду приводить просто примеры. Вопрос сложный для меня, поэтому решил обратиться за помощью. Вот так "работает", "Петров" - 2, затирает 3.35, все окей.

Java
1
2
3
4
5
6
7
8
9
Map<String, Double> map = new HashMap<String, Double>();
    map.put("Иванов", 1.35);
    map.put("Петров", 3.35);
    map.put("Петров", 2.00);
    map.put("Сидоров", 6D);
    for(Map.Entry<String, Double> entry : map.entrySet())
    {
        System.out.println(entry.getKey() + " " + entry.getValue());
    }
Вывод:
Иванов 1.35
Петров 2.0
Сидоров 6.0

А вот так, почему-то образуется два одинаковых ключа.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
String fileString = "";
        for(char a : chars)
            fileString +=a; //создание строки из массива
        System.out.println();
        String[] humans = fileString.split("\r\n"); //разделение на людей
        Map<String, Double> mapHumans = new HashMap<String, Double>();
        for (int i = 0; i < humans.length; i++) {
            String[] thisPart = humans[i].split(" "); //разделение на имя и фамилию
            mapHumans.put(thisPart[0], Double.parseDouble(thisPart[1]));
        }
        for(Map.Entry<String, Double> entry : mapHumans.entrySet())
        {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
В массиве chars[] было:
Петров 2
Сидоров 6
Иванов 1.35
Петров 3.1

Вывод:
Иванов 1.35
Петров 3.1
Петров 2.0
Сидоров 6.0
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2015, 12:33
Ответы с готовыми решениями:

Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки)
Добрый день. Задали решить пару задач из задачника Абрамова. Только условия вообще не могу понять! Помогите, пожалуйста, чем-нибудь!!...

Выведите одно целое число — максимальное число, которое могло получиться в протоколе при игре на данном поле
У Пети имеется игровое поле размером 3×3 , заполненное числами от 1 до 9. В начале игры он может поставить фишку в любую клетку поля. На...

Выведите одно целое число — максимальное число, которое могло получиться в протоколе при игре на данном поле
У пети имеется игровое поле размером 3х3, заполненное числами от 1 до 9. В начале игры он может поставить фишку в любую клетку поля. На...

10
 Аватар для Monty_Python
8 / 8 / 6
Регистрация: 31.07.2015
Сообщений: 39
29.08.2015, 13:16
ключ в хешмапе всегда будет один если их несколько одинаковых
0
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 20
29.08.2015, 13:41  [ТС]
не понял ответа

Добавлено через 17 минут
Я проверил хеш-коды добавляемых значений, и два "Петров" имели разные хеш-коды, почему?
0
65 / 64 / 15
Регистрация: 15.12.2013
Сообщений: 166
29.08.2015, 13:59
greg9809, два "Петров" должны иметь один и тот же хеш код, потому что это ключи. добавляйте так
Java
1
2
3
4
map.put(1.35, "Иванов");
    map.put(3.35, "Петров");
    map.put(2.00, "Петров");
    map.put(6D, "Сидоров");
0
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 20
29.08.2015, 14:17  [ТС]
нет, они имеют разный хеш-код и я не знаю что с этим делать
0
65 / 64 / 15
Регистрация: 15.12.2013
Сообщений: 166
29.08.2015, 14:22
greg9809, прочитайте про хешкод и уникальный ключ в HashMap, тогда вы поймете что если добавлять значения с одинаковыми ключами, то они будут затираться.
0
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 20
29.08.2015, 14:24  [ТС]
вот и дело то в том, что одинаковые значения имеют разный хешкод, я не понимаю почему, я знаю что должно затирать поэтому и спрашиваю
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
29.08.2015, 14:29
Лучший ответ Сообщение было отмечено greg9809 как решение

Решение

Цитата Сообщение от greg9809 Посмотреть сообщение
нет, они имеют разный хеш-код и я не знаю что с этим делать
скорее всего какой то символ типа переноса строки или non-ascii.
2
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
29.08.2015, 14:32
да что там гадать - надо выводить массив ДО того как он загоняется в мап, там или пробел где-то подгулял или перенос строки
0
 Аватар для Monty_Python
8 / 8 / 6
Регистрация: 31.07.2015
Сообщений: 39
29.08.2015, 18:32
Цитата Сообщение от Monty_Python Посмотреть сообщение
ключ в хешмапе всегда будет один если их несколько одинаковых
Цитата Сообщение от greg9809 Посмотреть сообщение
два "Петров" имели разные хеш-коды, почему?
Потому что они не одинаковые, внезапно.
0
 Аватар для Bend3r
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
29.08.2015, 18:37
Попробуйте собрать всю строку воедино, далее переобразовать в byte (utf-8) и посчитать кол-во байтов и символов. Скорее всего byte-ов будет больше чем символов. Ответ на три поста выше моего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.08.2015, 18:37
Помогаю со студенческими работами здесь

HashMap - в качестве ключа объект
Добрый день! Мне понадобилось решить такую задачу: ключ - комплексный объект, состоящий из 64 битного целого числа и строки из 5...

Хранение двух одинаковых ключей в HashMap
Если создать такую хэш функцию(hashCode так переопределить) которая для разных обьектов класса будет возвращать одинаковый хэш код(например...

Как отобразить два Integer в один Integer используя HashMap?
Имею ввиду, как ввести два ключа, по которым получается третий ключ такого же типа? Прошу объяснить на примере Integer.

Два первичных ключа, как реализоватья
Есть база данных в Access, там имеется несколько первичных ключей, можно ли как-то это же самое реализовать в SQL Server? Ну или как...

Как взять два внешних ключа?
Есть две модели public class Tender { public int Id { get; set; } public string Name { get; set; } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru