HashSet
Множество без повторов на основе хеш-таблицы; порядок не гарантирован.
Доступно с: Java 1.2
Синтаксис
public class HashSet<E> implements Set<E>Примеры
Повторы отбрасываются автоматически:
void main() {
Set<String> tags = new HashSet<>();
tags.add("java");
tags.add("sql");
tags.add("java");
IO.println(tags.size());
IO.println(tags.contains("sql"));
}Результат:
2
trueУникальные слова текста:
void main() {
String text = "to be or not to be";
Set<String> words = new HashSet<>(List.of(text.split(" ")));
IO.println(words.size() + " unique words");
}Результат:
4 unique wordsПримечания
add(), contains() и remove() работают за постоянное время, независимо от размера. Порядок обхода зависит от хешей и не совпадает с порядком добавления — не полагайтесь на него. Для своих классов нужны корректные equals() и hashCode(); у записей record они создаются автоматически.
См. также
- LinkedHashSet — Множество, которое помнит порядок добавления элементов.
- TreeSet — Множество, которое хранит элементы в отсортированном порядке.
- Set.add() — Добавляет элемент, если его ещё нет в множестве.
- Set.contains() — Проверяет, есть ли элемент в множестве.
Вопросы и ответы по теме
В учебнике
- Множества: Set — Множества в Java: HashSet без повторов, LinkedHashSet и TreeSet с порядком, объединение и пересечение множеств.