HashSet 클래스는 Java 컬렉션 프레임워크의 일부로, 중복 요소를 허용하지 않는 빠르고 순서가 지정되지 않은 컬렉션을 제공합니다. 이는 HashMap 위에 구축되었습니다. 즉, 동일한 시간 복잡도 이점을 상속하지만 순전히 요소 고유성에만 중점을 둡니다. 이 글에서는 HashSet의 작동 방식, HashSet의 고유한 특징, 다른 컬렉션과 다른 이유를 살펴보겠습니다.
HashSet은 다음과 같습니다.
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
중복 값을 무시하는 대신 교체해야 하는 경우 HashSet은 올바른 선택이 아닙니다. 이는 요소 고유성을 우선시하기 때문입니다.
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
setWithInitialCapacity의 용량이 5이더라도 크기는 0입니다. 크기는 초기 용량이 아니라 세트에 있는 요소 수를 반영하기 때문입니다. 용량은 요소가 추가됨에 따라 조정되는 내부 저장 공간으로 생각하면 됩니다.
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
정렬된 요소를 유지해야 하는 경우 요소가 오름차순으로 정렬되도록 하는 TreeSet 사용을 고려하세요.
인터뷰에서 일반적인 질문은 HashSet에 있는 요소의 색인을 검색할 수 있는지 여부입니다. 대답은 아니요입니다. 왜냐하면 HashSet은 목록이나 배열과 같은 인덱스 기반 구조가 아닌 해싱 메커니즘을 사용하여 요소를 저장하기 때문입니다.
HashSet은 HashMap에 의해 지원되므로 맵의 키를 사용하여 요소를 저장하지만 값은 관련이 없습니다. 이것이 바로 HashMap의 키와 마찬가지로 HashSet의 모든 요소가 고유해야 하는 이유입니다.
HashSet은 중복을 방지하는 빠르고 순서 없는 컬렉션이 필요할 때 강력한 도구입니다. 대부분의 작업에 대해 O(1) 시간 복잡도를 제공하지만 정렬 및 인덱싱과 같은 기능은 부족합니다. 개발자의 경우 HashSet이 HashMap과 어떻게 관련되는지 알면 내부 작동 방식을 이해하고 컬렉션 프레임워크를 더 잘 활용하는 데 도움이 됩니다.
다음 게시물에서는 후보자의 컬렉션 개념 지식을 테스트하기 위해 인터뷰에서 자주 묻는 일반적인 인터뷰 질문을 살펴보겠습니다.
자바 기초
어레이 인터뷰 필수사항
Java 메모리 필수사항
즐거운 코딩하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3