728x90
HashSet은 Set 인터페이스를 구현한 가장 대표적인 컬렉션이며, Set인터페이스의 특징대로 HashSet은 중복된 요소를 저장하지 않는다. HashSet에 새로운 요소를 추가할 때는 add메서드나 addAll메서드를 사용하는데, 만약 HashSet에 이미 저장되어 있는 요소와 중복된 요소를 추가하고자 한다면 이 메서드들은 false를 반환함으로써 중복된 요소이기 때문에 추가에 실패했다는 것을 알린다. 이러한 HashSet의 특징을 이용하면, 컬렉션 내의 중복 요소들을 쉽게 제거할 수 있다.
ArrayList와 같이 List인터페이스를 구현한 컬렉션과 달리 HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야 한다. (HashSet은 내부적으로 HashMap을 이용해서 만들어졌으며, HashSet이란 이름은 해싱(Hashing)을 이용해서 구현했기 때문에 붙여진 것이다.)
HashSet의 add메서드 새로운 요소를 추가하기 전에 기존에 저장된 요소와 같은 것인지 판별하기 위해 추가하려는 요소의 equals()와 hashCode()를 호출하기 때문에 equals()와 hashCode()를 목적에 맞게 오버라이딩 해야 한다.
728x90
'Java' 카테고리의 다른 글
Java 33. Lambda expression 람다식 (0) | 2023.04.05 |
---|---|
Java 32. TreeSet (0) | 2023.04.04 |
Java 30. Map collection (0) | 2023.04.02 |
Java 29. 추상클래스, 추상메서드 (abstract class, abstract method) (0) | 2023.04.01 |
Java 28. Serialization- ObjectInputStream, ObjectOutputStream (직렬화, 역직렬화) (0) | 2023.03.30 |