3.Set 컬렉션
: 순서가 유지되지 않고 중복을 허용하지 않는다.
: 데이터가 존재하냐 안하냐를 확인할때 사용한다.
: null이 저장 가능한데 하나만 가능하다.
-주요 메소드
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E e) | 주어진 객체를 저장, 객체가 성공적으로 저장되면 true를 리턴, 중복이면 false를 리턴 |
객체 검색
| boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
isEmpty() | 컬렉션이 비어 있는지 조사 |
Iterator<E> iterator() | 저장된 객체를 한 번씩 가져오는 반복자 리턴 |
int size() | 저장되어 있는 전체 객체 수 리턴 |
객체 삭제
| void clear() | 저장된 모든 객체를 삭제 |
boolean remove(Object o) | 주어진 객체를 삭제 |
-Set 종류
클래스 | 특징 |
HashSet | 순서가 필요없는 데이터를 hash table에 저장. Set 중에 가장 성능이 좋음. |
TreeSet | 저장된 데이터의 값에 따라 정렬됨. red-black tree 타입으로 값이 저장. HashSet보다 성능 느림. |
LinkedHashSet | 연결된 목록 타입으로 구현된 hash table에 데이터 저장. 순서에 따라 값이 정렬. 가장 느림. |
Hash가 들어가면 이중 검증이다.
Hashing : Hash funtion을 이용해서 데이터를 Hash table에 저장하고 검색하는 기법
1)HashSet
중복 체크를 위해 hashCode()와 equals()를 사용한다.
-equals 는 두 객체의 내용이 같은지, 동등성(equality) 를 비교하는 연산자
-hashCode 는 두 객체가 같은 객체인지, 동일성(identity) 를 비교하는 연산자
ex)hashCode와 equals의 개발자 정의(Comparator)
Member 클래스 정의
main 클래스
생성자를 통해 객체를 만들었어도
이름과 나이가 같을 경우 같은 객체로 설정했기 때문에
총 객체수가 한 개이다.
ex)hashSet
2)TreeSet
: Set의 기능을 가지면서 정렬의 기능도 가지고 있다.
: 데이터들이 자동으로 오름차순 정렬된다.
예제를 통해 메소드를 익히자.
ex)기본 메소드
ex)TreeSet 내림차순
ex)subSet 메소드
forever가 없는 이유는 f이후의 단어이기 때문이다.
댓글