728x90

HashSet

HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션이다.

Set의 특징은 중복을 허용하지않으며 순서가 없다는 것이다.

HashSet을 이용하여 컬렉션 내의 중복 요소들을 제거할 수 있다.

 

메서드

hashSet() :  HashSet객체를 생성하는 생성자이다.

HashSet(Collection c) : 컬렉션 c를 포함하는 HashSet을 생성하는 생성자이다.

HashSet(int initialCapacity) : 주어진 값을 초기 용량으로하는 HashSet객체를 생성한다.

HashSet(int initialCapacity, float loadFactor) : 초기 용량과 load factor를 지정하는 생성자.

load factor는 저장공간을 늘리는 기준 같은것이다. 0.8로 지정하면 기존 저장공간의 80%가 채워졌을 때 해당 저장공간을 두배로 늘린다.

 

boolean add(Object o ) : 새로운 객체 o를 hashset에 추가한다.

boolean addAll(Collection c) : 주어진 컬렉션 c를 hashset에 추가한다. 컬렉션을 추가할때는 addAll, 객체를 추가할 때는 add 를 사용한다.

 

void clear() : hashset에 존재하는 모든 요소들을 삭제한다.

Object clone() : HashSet의 복제를 반환한다. 주소복사가 아닌 값복사이다.(얕은 복사)

boolean contains(Object o) : 지정된 객체를 포함하고 있는지 확인한다.

boolean containsAll(Collection c) : 컬렉션 c가 가지고있는 요소들을 hashset이 가지고있는지 확인한다.

객체의 탐색은 contains 컬렉션의 탐색은 containsAll로 가능하다.

 

boolean isEmpty() : HashSet이 비어있는지 확인한다.

Iterator iterator() : Iterator 객체를 반환한다.

boolean remove(Object o) : HashSet에서 객체  o를 찾아 삭제한다. 성공하면 true, 실패하면 flase

boolean removeAll(Collection c) : HashSet에 존재하는 요소중 모든 Collection c에 존재하는 요소와 일치하는 요소들을 삭제한다.

boolean retainAll(Collection c) : 주어진 컬렉션에 저장된 객체와 동일한 것만 남기고 모두 삭제한다.

int size() : 지정된 객체의 수를 반환한다.

Object[] toArray() : 객체들을 객체배열 형태로 반환한다.

Obect[] toArray(Object[] a) : 저장된 객체들을 주어진 객체배열 a에 넣는다.

 

Set의 add예시이다. add메소드 사용시 중복된 값들은 false가 리턴되며 Set에 저장되지 않는다.

Interger 1과 String 1은 다르기 때문에 해당 Set에 저장될 수 있다.

 

 

사용자 정의클래스의 객체를 Set에 저장할 경우 equals()와 hashCode()를 적절하게 오버라이딩 해주어야 한다. 오버라이딩 해주지 않을경우 같은 속성값을 갖는 객체가 Set에 함께(중복) 저장될 수 있다.

 

중복된 값은 저장되지 않는 특징을 이용하여 각 합집합, 교집합, 차집합 등을 만들수 있다.

 

TreeSet

TreeSet은 이진 탐색 트리(Binary Search tree)라는 자료구조 형태로 데이터를 저장하는 컬렉션이다.

Set인터페이스 기반으로 구현했으며 중복 저장은 되지않으며 저장순서를 유지하지 않습니다. 이진 탐색트리 구조형태로 저장되기 때문에 객체 추가 및 저장시 자동으로 정렬됩니다.

 

메서든 대부분 HashSet메서드와 유사하며 별도로 사용하는 메서드들이 존재합니다.

메서드

 

Object ceiling(Object o) : 지정된 객체와 같은 객체를 반환. 없는 경우 큰값중 Object o와 가장 가까운 값을 반환

Object floor(Object o) : 지정된 객체와 같은 객체를 반환. 없는 경우 작은값중 Object o와 가장 가까운 값을 반환

Comparator comparator() : TreeSet의 정렬기준(Comparator)를 반환한다.

NavigableSet descendingSet() : TreeSet에 저장된 요소들을 역순으로 정렬하여 반환한다.

SortedSet headSet(Object toElement) : 지정된 객체보다 작은 값의 객체들을 반환한다.

SortedSet tailSet(Object fromElement) : 지정된 객체보다 큰 값의 객체들을 반환한다.

SortedSet subSet(Object fromElement, Object toElement) : 범위검색(fromElement와 toElement 사이)의 결과를 Set형태로 반환한다.

 

Object first() : 정렬된 순서에서 첫번째 객체를 반환한다. 일반적으로 가장 작은 객체이다.  

Object last() : 정렬된 순서에서 가장 큰값을 반환한다. 일반적으로 가장 큰 객체이다.

Object pollFirst() : TreeSet의 첫번째 요소

Object pollLast() : TreeSet의 마지막 번째 요소

 

TreeSet()의 경우 이진탐색 트리 자료구조를 가지기 때문에 값 삽입과 동시에 정렬이 된다.

 

문자열 TreeSet

subSet메서드를 통해 정렬된 Set을 잘라서 반환할수 있습니다.

 

 

 

 

728x90

'Programming > JAVA' 카테고리의 다른 글

Collection 정리  (0) 2021.08.07
Map  (0) 2021.08.07
Arrays & Comparator  (0) 2021.08.02
Iterator & ListIterator & Enumeration  (0) 2021.07.30
Stack과 Queue  (0) 2021.07.29

+ Recent posts