Java HashSet: The Ultimate Guide for Programmers
HashSet в Java - это коллекция, которая используется для хранения набора уникальных объектов без сохранения порядка вставки. Каждый элемент в HashSet должен быть уникальным, то есть HashSet не допускает дублирования элементов.
Для работы с HashSet сначала необходимо импортировать класс java.util.HashSet. Затем можно создать объект класса HashSet следующим образом:
java
HashSet set = new HashSet<>();
Это создаст пустой HashSet объект, который может хранить строки (тип String). Тип объектов в HashSet указывается в угловых скобках следующим образом:
Добавление элементов в HashSet осуществляется с помощью метода add():
java
set.add("one");
set.add("two");
set.add("three");
HashSet может содержать null значения:
java
set.add(null);
Чтобы удалить элемент из HashSet, необходимо использовать метод remove():
java
set.remove("one");
HashSet также позволяет проверить наличие элемента в коллекции с использованием метода contains():
java
set.contains("two");
Если необходимо удалить все элементы из HashSet, используйте метод clear():
java
set.clear();
Пример использования HashSet для хранения пользовательского объекта:
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getters and setters
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
HashSet people = new HashSet<>();
Person p1 = new Person("Tom", 20);
Person p2 = new Person("Kate", 22);
Person p3 = new Person("Tom", 20);
people.add(p1);
people.add(p2);
people.add(p3); // не будет добавлено, так как объект p3 совпадает с объектом p1
System.out.println(people.size()); // 2
В данном примере объект Person использовался в качестве типа элемента в HashSet. Для корректной работы HashSet с пользовательскими объектами необходимо переопределить методы equals() и hashCode(). В этом примере объекты p1 и p3 хеш-код совпадают, поэтому элемент p3 не будет добавлен в коллекцию.