Collections - Set(HashSet, TreeSet, LinkedHashSet)
Set
- interface
- 저장순서 유지되지 않고 중복 없음
null
은 1개만 가능
- 사용자 정의 객체를 담는 용도로 사용할 경우, 클래스를 정의할때
equals, hashCode
메서드 재정의와 Comparable
인터페이스 구현이 필요
- 구현 클래스 : HashSet, TreeSet
methods
add(E e) -> boolean
addAll(Collection<? extends E>) -> boolean
contains(Object) -> boolean
containsAll(Collection<?> c) -> boolean
size() -> int
iterator() -> Iterator<E>
isEmpty() -> boolean
retainAll(Collection<?>) -> boolean
removeAll(Collection<?>) -> boolean
clear() -> void
toArray() -> Object[] | T[]
remove(Object) -> boolean
HashSet
class HashSet<E>
- JDK 1.2
- 내부적으로
HashMap<E,Object> map
필드 존재
constructors
HashSet()
HashSet(int capacity, float loadFactor)
methods
add(E e) -> boolean
: 내부적으로 map.put(K,V)
호출
spliterator() -> Spliterator
TreeSet
extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable
- 검색기능이 강화된 Set 구현 클래스
- 내부적으로 Binary Search Tree의 일종인 Red Black Tree 구조를 가짐
- Range Search에 유리한 구조
- LinkedList 와 비교시, 데이터 삽입과 추가에 오버헤드 존재
- 검색기능(In-Order Traversal), 정렬기능 우수
- 저장과 동시에 오름차순으로 정렬
TreeSet<T>
일때 T는 반드시 Comparable<T>
의 구현객체로 하고, 아닌경우 생성자에서 Comparable<T>
전달 필수
NavigableSet
- first last lower higher floor ceiling 메소드를 제공하는 Set
- TreeSet은
NavigableMap<E,Object> m;
필드를 가짐
- 기본적으로
TreeMap
로 구현
methods
first() -> E
last() -> E
pollFirst() -> E
: 가장 작은값 + set에서 제거
pollLast() -> E
: 가장 큰값 + set에서 제거
lower(E) -> E
: 'E보다 작은' 가장 큰 값
floor(E) -> E
: 'E와 같거나 작은' 가장 큰 값
higher(E) -> E
: 'E보다 큰' 가장 작은 값
ceiling(E) -> E
: 'E와 같거나 큰' 가장 작은 값
descendingSet() -> NavigatableSet
: 저장된 요소를 역순으로 정렬해 반환
descendingIterator() -> Iterator<E>
: 내림차순으로 정렬된 Iterator
headSet(Object toElement) -> SortedSet
: 지정된 객체보다 작은값만
headSet(Object toElement, boolean inclusive) -> NavigableSet
: 지정된 객체보다 작은값만, 지정객체 존재하면 포함 여부 설정
tailSet(Object fromElement) -> SortedSet
: 지정객체보다 큰 값만
spliterator() -> Spliterator
subSet(Object fromElement, Object toElement) -> SortedSet
: 범위의 값(from은 포함, to는 포함안됨)
subSet(Object fromElement, boolean fromInclusive, Object toElement, boolean toInclusive) -> NavigableSet
: 지정객체 포함 여부
LinkedHashSet