HashSet
Set - 순서 ❌, 중복 ❌
HashSet
- Set 인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면, LinkedHashSet 클래스를 사용하면 된다.
TreeSet
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashSet 보다 데이터 추가, 삭제에 시간이 더 걸린다.
HashSet - 주요 메서드
| |
---|
HashSet() | |
HashSet(Collection c) | 생성자 |
HashSet(int initialCapacity) | 초기 용량 설정 |
HashSet(int initicalCapacitiy, float loadFactor) | 용량 설정 기준 |
| |
---|
boolean add(Object o) | 추가 |
boolean addAll(Collection c) | 추가 (합집합) |
boolean remove(Object o) | 삭제 |
boolean removeAll(Collection c) | 삭제 (교집합) |
boolean retainAll(Collection c) | 조건부 삭제 (차집합) |
void clear() | 모두 삭제 |
| |
---|
boolean contains(Object o) | 포함 여부 |
boolean containsAll(Collection c) | 여러 객체 모두 포함 여부 |
Iterator iterator() | 컬렉션 요소 읽어오기 |
| |
---|
boolean isEmpty() | 비어있는지 여부 |
int size() | 저장된 객체의 개수 |
Object[] toArray() | 객체 배열로 반환 |
Object[] toArray(Object[] a) | |
HashSet - equals() hashCode()
- 객체를 저장하기전에 기존에 같은 객체가 있는지 확인
boolean add(Object o)
는 저장할 객체의 equals()
와 hashCode()
를 호출 (Object class 메서드)
equals()
와 hashCode()
가 오버라이딩 되어 있어야 한다.
public boolean equals(Object obj) {
if(!(obj instanceof Person)) return false;
Person tmp = (Person)obj;
return this.name.equals(tmp.name) && this.age==tmp.age;
}
public int hashCode() {
return Objects.hash(name, age);
}