powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HashSet содержит повторы классов
5 сообщений из 5, страница 1 из 1
HashSet содержит повторы классов
    #39499344
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

При использовании HashSet для класса Human в наборе встречаются повторы.
Как исправить?

package hashsettest;

import java.util.HashSet;
import java.util.Set;

public class HashSetTest {

public static void main(String[] args) {

Set<Human> humanHashSet = new HashSet();

humanHashSet.add(new Human("Bull"));
humanHashSet.add(new Human("Bull"));
humanHashSet.add(new Human("Smith"));

System.out.println(humanHashSet);

}
}

class Human {

String surname;

Human(String surname) {
this.surname = surname;
}

@Override
public String toString() {
return this.surname;
}
}
...
Рейтинг: 0 / 0
HashSet содержит повторы классов
    #39499345
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует договоренность что в хеш-сет нужно класть только те
классы которые корректно переопределяют equals и hashcode.
...
Рейтинг: 0 / 0
HashSet содержит повторы классов
    #39500262
Elenamal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как я знаю, то не все классы подходят, только некий тип который будет корректно работать
...
Рейтинг: 0 / 0
HashSet содержит повторы классов
    #39500265
Elenamal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elenamal,

таким образом у меня получается.. http://www.vodokanal-msk.ru/otkachka-septikov.html] . что нужно переопределить equals и hash
...
Рейтинг: 0 / 0
HashSet содержит повторы классов
    #39500346
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class Human {

    private String surname;

    Human(String surname) {
        this.surname = surname;
    }
    
    @Override
    public int hashCode() {
        return this.surname.hashCode();
    }
    
    @Override
    public boolean equals(Object obj) {
        return this.surname.equals(obj);
    }

    @Override
    public String toString() {
        return this.surname;
    }
}
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / HashSet содержит повторы классов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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