powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HashMap - повторы значений
20 сообщений из 45, страница 2 из 2
HashMap - повторы значений
    #38154688
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,
дело во внешнем цикле, я тестировал на 15 элементах - так и осталось...
замените на i<map.size();
должно работать!
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38217533
SergeyKandalintsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174, задачка еще актуальна?

Вот мой вариант метода removeTheFirstNameDuplicates:
public static void removeTheFirstNameDuplicates( HashMap<String, String> map ):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public static void removeTheFirstNameDuplicates( HashMap<String, String> map )
    {
        Set<String> setNames = new HashSet<String>();
        Set<String> duplicateNames = new HashSet<String>();

        for ( Map.Entry<String, String> pair : map.entrySet() )
        {
            String name = pair.getValue();

            if ( setNames.contains( name ) )
            {
                duplicateNames.add( name );
            }
            else
            {
                setNames.add( name );
            }
        }

        for ( String name : duplicateNames )
        {
            removeItemFromMapByValue( map, name );
        }
    }


За один проход коллекции формируем множество из дублей имен. Потом перебирая дубли вызываем метод для их удаления из мапы.

Код получился короче и нет вложенных циклов.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38217625
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKandalintsev,
не совсем я понял зачем setNames, но дело в том то автору темы нужно удалять не дубликаты, а все значения, которые повторяются. Например, если в мапе два Семена, то удалить нужно обоих.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38217669
SergeyKandalintsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapeckerне совсем я понял зачем setNames,

в setNames попадут все имена, а в duplicateNames только те, которые встречаются в мапе 2 и более раза.

javapeckerно дело в том то автору темы нужно удалять не дубликаты, а все значения, которые повторяются. Например, если в мапе два Семена, то удалить нужно обоих.

все так и произойдет:
Код: java
1.
2.
3.
4.
for ( String name : duplicateNames ) 
        {
            removeItemFromMapByValue( map, name );
        }


последовательно перебираем элементы множества duplicateNames (Имена которые в исходной мапе встречаются более одного раза)
метод removeItemFromMapByValue( map, name ) удаляет из мапы все пары ключ(Фамилия) --> значение(Имя) с заданным именем name.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564644
umka_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сюда же отпишу.
А как удалить все повторы ключей при количестве вхождений ключа больше заданного n?
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564694
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umka_max,

Map не поддерживает множественное вхождение ключа. Так что количество повторов всегда 1. Читайте javadoc.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564705
umka_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD,
Да ладно!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
         HashMap<String, String> hm = new HashMap<>();
         hm.put("123", "Igor");
         hm.put("123", "Oleg");
         hm.put("123", "Petr");
         hm.put("234", "Igor");
         hm.put("234", "Semen");
         hm.put("345", "Petr");
         hm.put("345", "Igor");
         hm.put("456", "Semen");



Не взлетит?
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564713
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umka_max,

Не!
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564717
umka_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD,

Как "Не!"???
Из работающего примера.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564721
umka_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD,

Что тут не нравится?
Value ж разные.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564767
umka_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umka_maxСюда же отпишу.
А как удалить все повторы ключей при количестве вхождений ключа больше заданного n?

Блин!
Извиняюсь, туплю к вечеру. :)

Так надо:
А как удалить все повторы ключей, при количестве вхождений ключа для которых количество значений больше заданного n?
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38564771
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umka_max0FD,

Как "Не!"???
Из работающего примера.

Что тут не нравится?
Value ж разные.

Даже не знаю что Вам ответить, читай javadoc :)
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38565544
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umka_max,

Вам надо запретить менять значение у ключа после нескольких раз?
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38565689
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я фигею с вас, господа не знающие SQL-я. У вас задача лежит в плоскости
создания структуры данных которая не позволяет вставлять дубликаты values.
Тоесть по смыслу нужен unique-констрейнт на коллекцию.

По смыслу это аналог

Код: java
1.
CREATE TABLE map(key VARCHAR PRIMARY KEY, value VARCHAR UNIQUE);



Не нужно делать никакие процедуры removeTheFirstNameDuplicates!

Делайте сразу стуктуру данных которая НЕ ПОЗВОЛЯЕТ дублировать values во время вставок.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38566971
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ фигею с вас, господа не знающие SQL-я. У вас задача лежит в плоскости
создания структуры данных которая не позволяет вставлять дубликаты values.
Тоесть по смыслу нужен unique-констрейнт на коллекцию.

По смыслу это аналог

Код: java
1.
CREATE TABLE map(key VARCHAR PRIMARY KEY, value VARCHAR UNIQUE);



Не нужно делать никакие процедуры removeTheFirstNameDuplicates!

Делайте сразу стуктуру данных которая НЕ ПОЗВОЛЯЕТ дублировать values во время вставок.Хм...
Вот теперь вопрос на понимание: ежели по условиям задачи необходимо из массива объектов с разными ключами, но с одинаковыми значениями найти количество этих самых одинаковых значений? или если ключ есть переменная типа "numeric"(ну так просто символьная строка содержащая числа, которая генерируется уникальным образом по нарастающей), и Вам необходимо без использования SQL найти максимальный ключ при группировке по значению. Понятно, что на SQL это решается одной строкой... Теперь это-же нужно решить на Java.

Так что не надо пытаться притянуть SQL там где он не всегда и нужен. Рассматривайте задачу именно в плоскости Java, без использования сторонних технологий... Тогда это будет честно.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38567357
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umka_maxТак надо:
А как удалить все повторы ключей, при количестве вхождений ключа для которых количество значений больше заданного n?
Это просто, если только определить, какой ключ (какие ключи) стоит удалять из множества ключей сопоставленных с одним "значением" (или с эквивалентными значениями).

например,

1->"a"
2->"a"
3->"a"

А надо не более 2-х повторов.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38567442
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, я и говорю. Делайте ПРАВИЛЬНУЮ СТРУКТУРУ данных. С ограничениями
по уникальности.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38567465
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну тут вопрос не только в ограничении.
Может быть ситуация - старые отбрасывать, а новые добавлять и т.п.
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38567478
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То-же самое. Структура данных.

А то у вас выглядит так. "- А давайте-ко прогузим в мемори гигабайт физлиц а потом
покумекаем чо как там с дубликатами делать".
...
Рейтинг: 0 / 0
HashMap - повторы значений
    #38568120
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА то у вас выглядит так. "- А давайте-ко прогузим в мемори...
Или так - отсеять те команды которые на групповом этапе набрали одинаковое количество очков.
Согласитесь, вешать констреинт на то, что команды могут набирать одинаковое количество очков не комильфо.

Все зависит от задачи.
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / HashMap - повторы значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]