Почему не допускается дублирование атрибута HashSet? - PullRequest
0 голосов
/ 25 февраля 2020

Хорошо известной особенностью HashSet является то, что она не допускает дублирование. Например:

HashSet<Integer> h = new HashSet<>();
h.add(5);
h.add(5); // this time it won't allow it, because its a duplicate.

Однако почему это так? Кажется полезным иметь структуру данных, которая добавляет в лучшем случае O (1) и ищет в лучшем случае O (1), и все равно будет полезно, если у меня были дубликаты. Способ, которым Java реализует HashSet, не позволяет ему иметь дубликаты, или это просто выбор по какой-то причине?

1 Ответ

2 голосов
/ 25 февраля 2020

Поскольку это хорошо известный атрибут Set, первая строка связанной JavaDo c читает

Коллекция, которая не содержит повторяющихся элементов.

Таким образом HashSet и TreeSet (и все другие правильно реализованные Set (s)) не позволяют дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...