상세 컨텐츠

본문 제목

[JAVA]Collection(컬렉션)의 자료구조 정리 _Part04.HashSet (해시셋)

Language/JAVA

by Computer_x86_64 2021. 8. 15. 21:18

본문


Collection(컬렉션) 자료구조 정리 Part.05 HashSet

이번에는 Set interface에 구현한 HashSet을 설명하려고합니다.

해당 자료는 도식화해 해당 자료구조가 어떤 구조로 이뤄졌는지 정리한 내용입니다.

HashSet도 HashMap처럼 해시함수를 사용합니다.

Set : Set은 집합이다. 수학에서 집합은 A집합에 같은 값은 존재할수 없습니다.(데이터 중복 X, 순서 X)

(Set은 정렬불가해 list로 만들어 정렬해야 합니다.)

 

HashSet의 코드입니다.
안에 HashMap을 포함하고 있습니다.

 

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
    @java.io.Serial
    static final long serialVersionUID = -5024744406713321676L;

    private transient HashMap<E,Object> map;

    // Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();

    /**
     * Constructs a new, empty set; the backing {@code HashMap} instance has
     * default initial capacity (16) and load factor (0.75).
     */
    public HashSet() {
        map = new HashMap<>();
    }

HashSet을 갖고 있어 Map을 활용한 자료구조입니다.



TreeSet은 TreeMap을 활용한 것이며

그래서 앞서 설명한 HashMap, TreeMap과 유사합니다.



Java Collection 에서

 HashMap과 HashSet의 차이



HashMap 

- HashMap은 Map인터페이스를 구현했습니다.

Key, Value 형태로 데이터를 저장합니다.

- HashMap은 key를 hashcode의  연산후 값으로 인덱스를 생성합니다.

HashSet에 비해 HashMap은 unique Key를 이용해서 데이터에 바로 접근하기에 빠릅니다. 

HahSet

- HashSet은 Set 인터페이스를 구현했습니다.

- HashSet은 객체를 저장합니다.

- 객체의 hashcode를 생성, equals()를 이용해 hashcode를 비교하고, 객체 유무를 확인합니다. 

(중복객체 있을면 true, 없으면 false를 리턴함.)

관련글 더보기

댓글 영역