HashSet
HashSet реализует интерфейс Set.
Набор HashSet не допускает двух одинаковых элементов. Null значения допускаются.
Не синхронизирован. Элементы хранятся неупорядоченно.
Производительность HashSet выше, чем у LinkedHasSet и TreeSet.
HashSet надо понимать как множество неупорядоченных элементов, среди которых нет повторяющихся.
Если нужно убрать из какой-то коллекции повторяющиеся элементы, то можно использовать для этой задачи HashSet.
Базовые операции для коллекций – add, size, remove, contain – выполняются за постоянное время при условии, что не меняется ёмкость множества.
Создавать объект множества HashSet для строк рекомендуется так:
hs = new HashSet < String>();
здесь тип hs – Set, а не HashSet. Можно было использовать и HashSet, но рекомендуется именно Set, т.к. конструктор может поменяться, например, можно использовать LinkedHasSet или другое, а объект hs сохраниться.
Создать синхронизированный объект HashSet:
Добавить элемент в HashSet:
Добавить коллекцию vect в HashSet:
vect = new Vector < String>();
vect.add(«01»);
vect.add(«02»);
vect.add(«03»);
boolean resBool = hs.addAll(vect);
При добавлении коллекции vect все дублирующиеся элементы, если таковые найдутся, будут отброшены и в hs добавлены не будут.
Получить размер, т.е. количество элементов:
Проверить есть ли элемент «Str2»:
Удалить элемент «Str2»:
Удалить все элементы:
Выясняем, не пуст ли объект HashSet:
Содержит ли HashSet все злементы коллекции vect?
Удаляем из множества все элементы коллекции vect:
Удаляем из HashSet все элементы, кроме содержащихся в коллекции vect:
Добавим элемент null:
Вот как удаляем повторяющиеся элементы коллекции. Пусть дан вектор:
здесь элемент «UNO» повторяется дважды. Как сделать коллекцию без повторяющихся элементов? Так:
В результирующей коллекции hs будет только один элемент «UNO» и элементы «DOS»,»TRES»,»CUATRO». HashSet автоматически отбрасывает повторы.
Итератор должен быть объявлен внутри synchronized блока:
Получаем
такой результат.