목차
- Set의 인터페이스
- Set의 메소드
- HashSet 이란?
- HashSet 생성방법
- HashSet 메소드
- 예제
- TreeSet 이란?
- TreeSet 생성방법
- TreeSet 메소드
- 예제
- HahsSet 심화 예제
1. Set 인터페이스
- 앞 포스트에서 말한 것 처럼 Set은 '순서를 유지하지 않고, 중복을 허용하지 않는 데이터의 집합'
- Set 인터페이스에는 HashSet과 TreeSet이라는 두 클래스가 존재
- Set 인터페이스는 Collection 인터페이스를 상속받기 때문에 Collection 메소드 사용 가능
- 데이터의 중복을 허용하지 않기 때문에 저장 요청이 왔을 때 기존 데이터에 같은 데이터가 있는지 여부를 판단
- 데이터로 사용될 객체의 equals()와 hashCode() 메서드가 사전에 사용자가 원하는 방식으로 비교될 수 있도록 오버라이딩
1) Set의 메소드 (HashSet, TreeSet에도 동일하게 적용)
- 추가
- boolean add(E e) : 기존 데이터에 데이터 e가 없을 경우 데이터 e를 추가
- boolean addAll(Collection<? extends E> c) : 기존 데이터에 없는 컬렉션 c의 모든 데이터를 추가
- 확인
- boolean contains(Object o) : 특정 객체가 존재하는지 여부
- boolean containsAll(Collenction c) : Collection c 객체가 모두 포함되어 있는지 여부 확인 (포함되어 있으면 true)
- boolean isEmpty() : 비어있는지 확인
- int size() : 저장된 객체 수 리턴
- Iterator iterator() : Collection 요소 읽어오기
- 삭제
- void clear() : 저장된 모든 객체 삭제
- boolean remove(Obejct o) : 기존 데이터에서 Object o를 삭제
- boolean removeAll(Collection<?> c) : 기존 데이터에서 컬렉션 c의 모든 데이터를 삭제
- boolean retainAll(Collection<?> c) : 기존 데이터에서 컬렉션 c와 일치하는 데이터만 남기고 나머지는 삭제
2. HashSet 이란?
- 컬렉션의 하나로 중복되지 않는 데이터를 순서에 상관없이 저장
- 활용 예시 : 회원가입 시 아이디 중복확인 (이는 데이터가 정렬되어있을 필요도 없고, 빠르게 중복되는 값인지만 찾으면 되기 때문에)
1) HashSet 생성방법
- HashSet<String> h1 = new HashSet<String>( ); // 기본 capacity는 16, load factor는 0.75
- HashSet<String> h2 = new HashSet<String>(20); // 초기 capacity를 20으로 설정 (load factor는 0.75)
- HashSet<String> h3 = new HashSet<String>(20, 0.8); // 초기 capacity를 20, load factor는 0.8로 설정
- HashSet<String> h4 = new HashSet<String>(h1); // 지정된 컬렉션(h1)의 데이터를 가진 HashSet 생성
**capacity 는 해시테이블의 버킷수 (= 저장용량)
load factor는 해시테이블의 버킷이 얼마나 가득 찼는지 보여주는 수치
참고로 이 값을 설정하지 않을 경우 기본 capcity 는 16, load factor는 0.75로 설정
2) HashSet 메소드
- 반환
- Object[ ] toArray( ) : 현재 HashSet의 모든 데이터를 Object 배열로 반환
- <T> T[ ] toArray(T[ ] a) : 현재 HashSet의 모든 데이터를 배열 a에 담아 반환
3) 예제
3. TreeSet 이란?
- 컬렉션의 하나로 중복되지 않는 데이터를 저장하며, Set 인터페이스 중 유일하게 정렬이 가능 (검색 기능이 강화된 컬렉션 프레임워크 구현체)
- 객체가 저장되는 동시에 자동으로 오름차순으로 정렬 (데이터의 가중치에 따른 순서대로 정렬)
** Tree 라는 자료구조 자체가 데이터를 일정 순서에 의해 정렬하는 구조이며, 거기에 더해진 것이 바로 Set인 중복값 방지 자료구조
1) TreeSet 생성방법
- TreeSet() : 기본 생성자
- TreeSet(Collection c) : 주어진 컬렉션을 저장하는 TreeSet 생성
- TreeSet(Comparator comp) : 주어진 정렬 기준으로 정렬하는 TreeSet 생성
2) TreeSet 메소드
- E first() : 제일 작은 객체를 반환 (오름차순)
- E last() : 제일 큰 객체를 반환 (오름차순)
- E lower(E e) : 주어진 객체보다 작은 데이터 중 최댓값 반환 (주어진 객체보다 바로 아래 객체를 반환)
- E higher(E e) : 주어진 객체보다 큰 데이터 중 최솟값 반환 (주어진 객체보다 바로 위 객체를 반환)
- E floor(E e) : 주어진 객체와 같은 객체를 반환 (없다면 주어진 객체보다 작은 데이터 중 최댓값 반환)
- E ceiling(E e) : 주어진 객체와 같은 객체를 반환 (없다면 주어진 객체보다 큰 데이터 중 최소값 반환)
- E pollFirst() : 제일 작은 객체를 반환하고 컬렉션에서 제거
- E pollLast() : 제일 큰 객체를 반환하고 컬렉션에서 제거
- SortedSet subSet(E1 fromElement, E2 toElement) : 범위 검색(fromElement와 toElement전)의 결과 반환 >> 부분집합
- SortedSet headSet(E toElement) : 지정된 객체 미만의 값의 객체들을 반환
- SortedSet tailSet(E fromElement) : 지정된 객체 이상의 값의 객체들을 반환
** 문자열(String) 같은 경우엔 문자의 유니코드 값으로 비교
2) 예제
4. HashSet 심화 예제
'IT 언어 > Java' 카테고리의 다른 글
[Java] Iterator 인터페이스 (ListIterator, Enumeration) (0) | 2024.02.12 |
---|---|
[Java] Map 인터페이스 (HashMap 과 TreeMap) (0) | 2024.02.12 |
[Java] List 인터페이스 (ArrayList 와 LinkedList) (1) | 2024.02.12 |
[Java] Collection (List, Set, Map) (0) | 2024.02.08 |
[Java] Date 클래스 ( DecimalFormat() 과 SimpleDateFormat() ) (0) | 2024.02.05 |