Comparator와 Comparable
: 정렬에 필요한 메서드(정렬기준 제공)을 정의한 인터페이스
: 결과가 양수/음수/0인지에 따라서 자리바꿈을 할지 말지를 알려줌
✔ Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용
✔ Comparable : 기본 정렬 기준 구현 (오름차순, 내림차순 등...)
* 정렬 sort(): 두 대상을 비교하고 자리를 바꿈
public interface Comparator{
int compare (Object o1, Object o2); // Compare 두객체를 비교, 0은 같다, 음수는 오른쪽이 큼, 양수는 왼쪽이큼
boolean equals(Objct obj); // equals를 오버라이딩하라는 뜻
}
public interface Comparable{
int compareTo(Object o); // CompareTo는 주어진 객체 o를 자신과 비교
}
👉 compare()와 compareTo()는 두 객체의 비교결과를 반환하도록 작성 (0,음수, 양수 셋중 하나를 반환)
Integer와 Comparable
public final class Integer extends Number implements Comparable{
public int compareTo(Integer anotherInteger){
int v1 = this.value;
int v2 = anotherInteger.Value;
// 같으면 0, 오른쪽이 크면 -1, 작으면 1 반환
return (v1<v2 ? -1: (v1==v2? 0:1)); // 성능문제로 3항연산자로 표현
// return v1-v2; 내림차순의 경우 반대로 뺄셈하면 된다. 음수=오른쪽이 큼 이라 자리바꿈이 일어남 빼기만 해도 비교가능
}
static void sort(Object [] a) // 객체 배열에 저장된 객체가 구현한 Comparable (기본정렬기준)에 의한 정렬
static void sort(object [] a, Comparator c) // 지정한 Comparator에 의한 정렬 (정렬대상, 정렬기준)
HashSet
: Set (집합) 인터페이스를 구현한 대표적인 컬렉션 클래스.
: 순서X 중복X ▶ 결과값이 순서유지되는것 처럼 보이지만 사실 알 수 없음.
: Set이 필요하면 HashSet이 일반적. 순서를 유지하려면 LinkedHashSet클래스 (연결을 통해 순서가 생김)를 사용.
: 다른 컬렉션 클래스인 TreeSet은 범위 검색과 정렬에 유리한 컬렉션 클래스. (from~to 범위검색하여 정렬). 따라서 HashSet보다 데이터 추가,삭제에 시간이 더 걸린다
: Set은 정렬불가이므로 List에 넣어서 정렬해야 함
✔ HashSet의 주요메서드
생성자 | |
HashSet() | |
HashSet(Collection c) | 생성자. 컬렉션클래스는 공간이 부족하면 스스로 늘어남 > 가변적 |
HashSet(int initialCapacity) | 초기용량 설정 |
HashSet(int initialCapacity, float loadFactor) | float loadFactor로 어느만큼 찼을때 증가? 0.8이면 80% 찼을때 두배로 늘어난다 |
추가 | boolean add(Object o) | |
boolean addAll(Collection c) | 합집합 | |
삭제 | boolean remove (Object o) | |
boolean removeAll(Collection c) | 교집합 | |
조건부삭제 | boolean retainAll(Collection c) | Collection에 있는것만 남기고 삭제. 차집합. |
모두삭제 | void clear() | |
contains() | boolean contains(Object o) | set이 객체를 포함하고 있는가 |
boolean containsAll(Collection c) | Collection에 담긴 여러객체가 모두 포함되어있는가 | |
iterator iterator() | collection요소를 읽어옴 | |
boolean isEmpty() | 비었는지 확인 | |
int size() | 저장된 객체의 개수 | |
toArray() | Object[] toArray() | set에 저장된 객체를 객체배열로 반환 |
Object[] toArray(Object[] a) |
'🔥 Vamos > Java' 카테고리의 다른 글
1106 | 자바의 정석 기초편 :: ch11-39~11-45 (0) | 2022.11.06 |
---|---|
1106 | 자바의 정석 기초편 :: ch11-37~11-38 (0) | 2022.11.06 |
1105 | 자바의 정석 기초편 :: ch11-25~11~29 (0) | 2022.11.05 |
1104 | 자바의 정석 기초편 :: ch11-22~11~24 (0) | 2022.11.05 |
1103 | 자바의 정석 기초편 :: ch11-15~11-21 (0) | 2022.11.03 |