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)

 

 

 

+ Recent posts