Хорошо известной особенностью 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
, не позволяет ему иметь дубликаты, или это просто выбор по какой-то причине?