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를 리턴함.)
자바 람다식 ( java lambda expression ) 정리하기 part01 (2) | 2021.08.19 |
---|---|
Lombok이란? 롬복 어노테이션 Lombok Annotation (0) | 2021.08.18 |
[JAVA]Collection(컬렉션)의 자료구조 정리 _Part04.TreeMap (0) | 2021.08.13 |
[JAVA]Collection(컬렉션)의 자료구조 정리 _Part03.HashMap (0) | 2021.08.12 |
[JAVA]Collection(컬렉션)의 자료구조 정리 _Part02.LinkedList (0) | 2021.08.11 |
댓글 영역