1. HashSet
HashSet 은 Set 인터페이스를 구현한가장 대표적인 컬렉션이다. HashSet 에 데이터를 저장할 때는 add() 또는 addAll() 메서드를 사용하는데 만약에 중복되는 데이터가 이미 존재하는 경우에는 false 를 반환하여 데이터 저장이 실패했다는 것을 알린다.
ArrayList 와 같이 List 인터페이스를 구현한 컬렉션과 달리 HashSet 은 저장순서를 저장하지 않는다. 저장순서를 유지하고자 한다면 LinkedHashSet 을 사용해야 한다.
메서드 | 설명 |
HashSet() | HashSet 객체 생성 |
HashSet(Collection c) | 컬렉션 c의 데이터를 포함하는 HashSet 객체를 생성 |
HashSet(int initialCapacity) | 주어진 값을 초기용량으로 하는 HashSet 객체를 생성 |
HashSet(int initialCapacity, float loadFactor) | 초기용량과 load factor 를 지정하는 생성자 ※ load factor 는 컬렉션의 저장공간이 몇 퍼센트일때 저장공간을 늘릴지를 정하는 값으로 기본값은 75%, 0.75이다. |
boolean add(Object o) | 객체를 저장한다. |
boolean addAll(Collection c) | 컬렉션에 있는 모든 객체를 저장한다. |
void clear() | 저장된 모든 객체를 삭제한다. |
Object clone() | HashSet을 복제해서 반환한다. (얕은 복사) |
boolean contains(Obejct o) | 지정된 객체를 포함하는지 여부를 반환한다. |
boolean containsAll(Collection c) | 컬렉션의 모든 객체가 포함되어 있는지 여부를 반환한다. |
boolean isEmpty() | 컬렉션이 비어있는지 여부를 반환한다. |
Iterator iterator() | Iterator 를 반환한다. |
boolean remove(Object o) | 객체를 삭제한다. |
boolean removeAll(Collection c) | 컬렉션 c에 있는 객체와 동일한 객체가 현재 HashSet 에 저장되어 있으면 모두 삭제한다. |
boolean retainAll(Collection c) | 컬렉션 c에 있는 객체와 동일한 객체만 남기고 나머지 객체는 모두 삭제한다. |
int size() | 현재 HashSet 의 크기를 반환한다. |
Obejct[] toArray() | 저장된 객체들을 객체배열의 형태로 반환한다. |
Object[] toArray(Obejct[] a) | 저장된 객체들을 주어진 객체배열 a에 저장한다. |
HashSet 은 Set 인터페이스를 구현했기 때문에 중복을 허용하지 않는다. 동일한 데이터인지 비교를 할 때는 equals() 와 hashCode() 메서드를 사용한다. 그렇기 때문에 기본값이 아닌 참조형 객체 간의 비교에서 특정 값이나 조건으로 동일 여부를 판단하기 위해서는 equals() 메서드를 의도에 맞게 오버라이딩 해야한다.
- hashCode()
hashCode() 를 오버라이딩 할 때는 다음의 몇가지 조건을 지켜야한다.
1) 실행중인 애플리케이션 내의 동일한 객체에 대해서 hashCode() 를 여러번 호출하였을 때, 매번 같은 int 값을 반환하여야 한다. 실행이 중단되고 재실행 되는 등 실행시마다는 다른 값을 반환하여도 된다.
2) equals() 메서드를 이용하여 비교하였을 때 true 값을 얻은 객체들은 각각 hashCode() 의 호출 결과도 같아야 한다.
3) equals() 메서드를 호출했을 때 false 를 반환하는 두 객체는 hashCode() 의 호출에 대해 같은 int 값을 반환하는 경우가 있어도 괜찮지만, hashing 을 사용하는 컬렉션의 성능을 위해 다른 int 값을 반환하는 것이 좋다.
2. TreeSet
TreeSet 은 이진 검색 트리의 구조로 이루어진 자료구조 컬렉션 클래스이다. 이진 검색 트리 알고리즘 중에서 성능을 향상시킨 레드 블랙 트리로 구현되어 있다. 이 자료구조는 정렬, 검색, 범위검색 등에 높은 성능을 보이는 자료구조이다.
이진 검색 트리 구조로 이루어져 있기 때문에 각각의 객체들이 노드로 부모-자식 관계로 연결되어 저장이 된다. 이러한 구조를 유지하기 위해서는 각각의 객체들을 비교할 수 있어야 한다. 그렇기 때문에 TreeSet 에 저장되는 객체가 Comparable 을 구현한 객체이거나 Comparator 를 제공하여 두 객체를 비교할 수 있도록 해야한다. 그렇지 않으면 예외가 발생하게된다.
메서드 | 설명 |
TreeSet() | TreeSet 생성자 |
TreeSet(Collection c) | 컬렉션 c의 값을 모두 저장하는 TreeSet 생성 |
TreeSet(Comparator comp) | 주어진 정렬조건 comp 로 객체들을 비교하는 TreeSet 생성 |
TreeSet(SortedSet s) | 주어진 SortedSet 을 구현하는 컬렉션을 저장하는 TreeSet 생성 |
boolean add(Object o) boolean addAll(Collection c) |
객체를 저장한다. |
Object ceiling(Object o) | 객체 o와 같은 객체, 같은 객체가 없는 경우에는 큰 값을 가진 객체 중 가장 가까운 값의 객체를 반환한다. 반환할 객체가 없는 경우에는 null 을 반환한다. |
void clear() | 저장된 객체를 모두 삭제한다. |
Object clone() | TresSet 을 복제하여 반환한다. |
Comparator comparator() | TreeSet 의 정렬기준을 반환한다. |
boolean contains(Object o) boolean containsAll(Collection c) |
주어진 객체 또는 컬렉션의 객체들이 해당 자료구조에 모두 들어있는지 확인한다. |
NavigableSet descendingSet() | TreeSet 에 저장된 요소들을 역순으로 정렬해서 반환한다. |
Object first() | 정렬된 순서에서 첫번째 객체를 반환한다. |
Object floor(Object o) | 지정된 객체와 같은 객체, 같은 객체가 없는 경우에는 작은 값 중에서 제일 가까운 값을 반환한다. 반환할 객체가 없는 경우에는 null 을 반환한다. |
SortedSet headSet(Object toElement) | 지정된 객체보다 작은 값의 객체들을 반환한다. |
NavigableSet headSet(Object toElement, boolean inclusive) | 지정된 객체보다 작은 값의 객체들을 반환한다. inclusive 가 true 이면 같은 값도 반환한다. |
Object higher(Object o) | 지정된 객체보다 큰 값을 가진 객체 중 제일 가까운 값의 객체를 반환한다. |
boolean isEmpty() | TreeSet 이 비었는지 확인한다. |
Iterator iterator() | TreeSet 의 Iterator 를 반환한다. |
Object last() | 정렬된 순서에서 마지막 객체를 반환한다. |
Object lower(Object o) | 지정된 객체보다 작은 값을 가진 객체 중 제일 가까운 값의 객체를 반환. 없으면 null 을 반환한다. |
Object pollFirst() | TreeSet 의 첫번째 요소 (제일 작은 값의 객체) 를 반환한다. |
Object pollLast() | TreeSet 의 마지막 요소 (제일 큰 값의 객체) 를 반환한다. |
boolean remove(Object o) | 해당 객체를 삭제한다. |
boolean retainAll(Collection c) | 주어진 컬렉션에 저장되어 있는 값과 동일한 객체를 제외하고 나머지 객체를 모두 삭제한다. |
int size() | TreeSet 에 저장된 객체의 개수를 반환한다. |
Spliterator spliterator() | TreeSet 의 spliterator 를 반환한다. |
SortedSet subSet(Object fromElement, Object toElement) | 범위검색 (fromElement ~ toElement) 의 결과를 반환하다. (toElement 는 external boundary 이기 때문에 포함하지 않는다.) |
SortedSet tailSet(object fromElement) | 지정된 객체보다 큰 값의 객체들을 반환한다. |
Object[] toArray() | 저장된 객체를 객체 배열로 반환한다. |
Object[] toArray(Object[] a) | 저장된 객체를 주어진 배열에 저장하여 반환한다. |
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] Properties (0) | 2022.02.04 |
---|---|
[JAVA] TreeMap (0) | 2022.02.04 |
[JAVA] Comparator, Comparable (0) | 2022.01.28 |
[JAVA] Arrays (0) | 2022.01.27 |
[JAVA] Iterator, ListIterator, Enumeration (0) | 2022.01.26 |