song.log

[자바 기술면접] 27. set 컬렉션 - HashSet, TreeSet 본문

StudyLog/Java interview

[자바 기술면접] 27. set 컬렉션 - HashSet, TreeSet

SingaKorean 2023. 4. 30. 15:58
반응형

- 정의

Set 컬렉션(Set Collection) : 저장 순서를 유지하지 않고 중복된 원소를 허용하지 않는 자료구조입니다. 따라서 순서에 상관 없이 중복값을 하고자 하지 않을 때 유용하게 쓰입니다. 

 

HashSet : Set 컬렉션 내에서 가장 자주 사용되는 클래스로 해시 알고리즘(Hash Algorithm)을 사용하였습니다. 내부적으로 HashMap을 사용하여 원소를 저장합니다. 순서를 보장하지 않으며 null 값을 포함할 수 있습니다. HashSet은 검색, 추가, 삭제 등의 연산에서 O(1)의 시간 복잡도를 가지므로 대용량의 데이터를 처리할 때 효율적입니다. 하지만 요소들의 순서를 보장하지 않으므로 순서가 중요한 경우에는 TreeSet과 같은 다른 Set 구현체를 사용해야 합니다.

 

TreeSet : Set 인터페이스를 구현한 클래스 중 하나로, 이진 검색 트리(binary search tree)의 형태로 데이터를 저장합니다. TreeSet에 저장된 요소들은 자동으로 오름차순으로 정렬됩니다. 이진 검색 트리는 데이터를 추가, 검색, 삭제할 때 평균 O(log n)의 시간복잡도를 갖기 때문에 검색과 정렬에 유용합니다. 하지만 TreeSet은 내부적으로 이진 검색 트리를 사용하기 때문에, 데이터를 추가, 삭제, 검색하는 시간이 많이 소요됩니다.

 

- 영어 정리 : 

Set Collection : It is a data structure that does not maintain the storage order and does not allow duplicate elements. Therefore, it is useful when you want to remove duplicates regardless of order.

 

HashSet : It is the most commonly used class in the Set Collection, and uses a hash algorithm. Internally, it uses a HashMap to store elements. It does not guarantee order and can include null values. HashSet has a time complexity of O(1) for operations such as search, add, and delete, making it efficient for processing large amounts of data. However, since it does not guarantee the order of elements, if order is important, other Set implementations such as TreeSet should be used.

 

TreeSet : It is one of the classes that implements the Set interface, and stores data in the form of a binary search tree. The elements stored in TreeSet are automatically sorted in ascending order. Binary search trees are useful for searching and sorting with an average time complexity of O(log n) when adding, searching, and deleting data. However, since TreeSet uses a binary search tree internally, adding, deleting, and searching data takes a lot of time.

반응형
Comments