HashSet
HashSet은 Java 컬렉션 프레임워크에서 제공하는 클래스로, 중복된 요소를 허용하지 않는 집합(Set)을 구현한 것이다. HashSet은 해시 테이블(Hash Table)을 사용하여 요소를 저장하며, O(1)의 상수 시간 복잡도로 요소에 대한 삽입, 삭제, 검색 작업을 수행할 수 있다.
HashSet 특징
new HashSet<>()는 기본 생성자를 호출하여 HashSet 객체를 생성한다. <E>는 제네릭(Generic) 타입을 나타내는 것으로, 여기서는 HashSet이 저장할 요소의 타입을 지정하는 역할을 한다. 예를 들어, new HashSet<String>()는 String 요소를 저장하는 HashSet 객체를 생성한다.
HashSet은 중복된 요소를 허용하지 않으므로, 요소의 중복 여부를 판단하기 위해 요소의 equals()와 hashCode() 메서드를 사용한다. 따라서 HashSet에 저장되는 객체는 동등성(equality)과 해시 코드(hash code)를 올바르게 구현해야 한다.
HashSet 예시
아래는 문자열 배열을 HashSet에 저장하는 예시 코드이다.
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
String[] names = {"Alice", "Bob", "Charlie", "Alice", "Dave"};
// HashSet 객체 생성
Set<String> nameSet = new HashSet<>();
// 배열 요소를 HashSet에 추가
for (String name : names) {
nameSet.add(name);
}
// HashSet 출력
for (String name : nameSet) {
System.out.println(name);
}
}
}
/*
Bob
Alice
Charlie
Dave
*/
- 문자열 배열 names 를 생성하며, "Alice" 인 중복 요소가 포함됨.
- String 요소를 저장하는 HashSet 객체 nameSet을 생성.
- 반복문을 사용하여 배열 names의 모든 요소를 nameSet에 추가.
- HashSet 은 중복된 요소를 허용하지 않으므로, 중복된 요소는 자동으로 제거.
- HashSet은 순서를 보장하지 않으므로, 출력 결과는 순서가 무작위로 나타남.
정리
HashSet 은 중복된 요소를 허용하지 않으므로, 중복을 제거하고 유일한 요소들만을 관리하는데 유용하다. 또한 해시 테이블을 기반으로 하므로 매우 빠른 검색 작업을 제공한다.
'알아가기 > Java' 카테고리의 다른 글
[Java] compareTo() 메서드 이해하기 (0) | 2023.07.16 |
---|---|
[Java] 조회값을 반환하거나 기본값을 반환하는 getOrDefault (0) | 2023.06.15 |
[MySQL] 로그인 비밀번호 바꾸기 ver. 8.0.31 (0) | 2023.02.09 |
[Java] 맥북 Tomcat 설치 후 ./startup.sh 실행 시 권한 거부 해결 (0) | 2023.01.26 |
[Java] substring() 원하는 위치의 문자열을 가져오기 (0) | 2023.01.21 |