배열의 정렬
Array 클래스의 sort 메소드
- Arrays 클래스의 sort 메소드의 기준은
오름차순
이다.
- sort를 통해
Instance
를 정렬할 시 생각할 부분이 많다.
- Instance를 정렬하기 위한 기준이 필요하다.
프로그래머는 위 같은 기준을 정해야 한다.
compareTo 메소드 정의 기준
- compareTo 메소드를 통해 기준을 확립한다.
- 인자로 전달된 o가 작다면
양의 정수
반환
- 인자로 전달된 o가 크다면
음의 정수
반환
- 인자로 전달된 o와 같다면
0을
반환
Comparable Interface
를 통해 구현이 가능하다.
클래스에 정의하는 오름차순 기준
- 나이, 이름을 기준으로 정렬의 기준을 잡을 수 있다.
- 즉, 위에서 말했다시피 프로그래머가 기준을 잡아야 한다.
- JVM은 두 인스턴스의 값을 비교한 후에 값을 반환한다.
예제 1-1
public int compareTo(Objecet o){
Person p = (Person)o;
return this.age - p.age;
}
배열의 탐색: 기본 자료형 값 대상
- 탐색을 하는 가장 기본적인 이유는 값이 있는지 없는지 판단 하기 위함.
- 또한, 어느 위치에 있는지 판단 하기 위함.
- BinarySearch()를 통해 나온 결과는 인덱스의 위치를 반환.
- 기본적으로 탐색의 대상은 배열인 경우가 많다.
- BinarySearch()는 이진 탐색을 수행 한다.
- 이진 탐색을 진행하기 위해서는 데이터들이 오름차순으로 정렬되어 있어야 한다.
- 만약 오름차순이 수행되있지 않은 경우에는 sort를 통해 정렬 후 수행해야 한다.
예제 1-1
Class ArraySearch {
public static void main(String[] args){
int [] ar = {33, 55, 11, 44, 22};
Arrays.sort(ar);
for(int n : ar)
System.out.println(n + "\t");
System.out.println(ß);
int idx = Arrays.binarySearch(ar, 33);
System.out.println("INdex : 33 " + idx);
}
}
배열의 탐색: 인스턴스 대상의 예
- Instance의 탐색을 진행할 시, compareTo()를 기준으로 결과를 반환 한다.
- 즉, compareTo()의 현재 기준 나이를 통해 탐색을 한다.
제네릭
- 명시적 형 변환은 코드의 안정성을 낮춘다.
- 또한, 명시적 형 변환은 JVM의 간섭을 낮추기 때문에 오류의 발견이 힘들 수 있다.
제네릭은 이러한 명시적 형 변환의 사용을 제어 할 수 있다.
- 제네릭을 사용하는 이유가 단순히 자료형을 나중에 결정하기 위함이 아니다.
- 성능과 예외 상황을 대비해 만들어진 문법이다.
제네릭 기반의 클래스 정의
- < T >, < E >
- Instance 생성 시 필요에 따라 < T >를 초기화 함을 의미.
- 자료형을 미리 결정하는 것이 아닌 필요에 의해 결정.
제네릭 클래스 기반 인스턴스 생성
Box<Apple> abox = new Box<Apple>();
- T를 Apple로 결정하여 인스턴스 생성
- 따라서 Apple 또는 Apple을 상속하는 하위 클래스의 인스턴스 저장 가능.
Box<Orange> abox = new Box<Orange>();
- T를 Orange로 결정하여 인스턴스 생성
- 따라서 Orange 또는 Orange을 상속하는 하위 클래스의 인스턴스 저장 가능.