의문점 공부하기/📌 Java

📌 HashSet 구현 원칙은 무엇일까?

아리빠 2023. 6. 27. 19:17

HashSet은 내부적으로 HashMap을 사용하여 요소를 저장한다

 

HashSet의 요소는 HashMap의 키로 저장되며, 모든 요소의 값은 동일한 객체로 설정되고, 이를 통해 HashSet은 중복된 요소를 허용하지 않는다

해시 함수 사용: 

HashSet은 해시 함수를 사용하여 요소를 저장

해시 함수는 요소의 해시 코드를 계산하고, 해당 코드를 기반으로 요소를 저장할 위치를 결정, 이를 통해 데이터를 빠르게 찾을 수 있다.


중복 요소 제거:

HashSet은 중복된 요소를 허용하지 않아서,  이미 HashSet에 존재하는 요소를 추가하려고 하면, 추가되지 않는다.


순서 없음: 

HashSet은 순서를 유지하지 않는다. 따라서 요소의 순서에 의존하지 않는 작업을 수행해야 하고, 만약 순서가 필요하다면, HashSet을 List로 변환한 후에 정렬해야 한다


해시 충돌 처리: 

HashSet은 해시 함수를 사용하여 요소를 저장, 해시 충돌이 발생할 수 있다.

해시 충돌이란 서로 다른 요소가 동일한 해시 코드를 가지는 경우인데, HashSet은 내부적으로 해시 충돌을 처리하며, 동일한 해시 코드를 가지는 요소들을 연결 리스트 형태로 저장해준다.

 


HashSet은 Set 인터페이스를 구현하고 있어서, Set 인터페이스의 메서드를 사용할 수 있다.


- add(E e): 요소를 추가
- remove(Object o): 지정된 요소를 제거
- contains(Object o): 지정된 요소가 HashSet에 포함되어 있는지 확인
- size(): HashSet의 크기를 반환
- isEmpty(): HashSet이 비어있는지 확인