배열의 정렬
.1) Arrays.sort(배열) : 오름차순으로 배열 정리
.2) public int compareTo(Object o) { //크고 작음에 대한 판단 기준 결정 후 sort
...........Person p = (Person) o;
...........return this.age – p.age;
....}
...(1) 인자로 전달된 o가 작다면 양의 정수 반환 (뒤로)
...(2) 인자로 전달된 o가 크다면 음의 정수 반환 (앞으로)
...(3) 인자로 전달된 o와 같다면 0을 반환
※ 오름차순 배열 정리 및 크고 작음에 대한 판단 기준 결정 후 sort 예시
1. 배열의 탐색
.1) public static int binarySearch(int[] a, int key)
...(1) 배열 a에서 key를 찾아서 있으면 key의 인덱스 값, 없으면 0보다 작은 수 반환
...(2) binarySearch 메소드는 ‘이진 탐색)’이라는 알고리즘을 기반으로 탐색을 진행
...(3) 정렬된 상태의 데이터를 대상으로 하는 탐색 알고리즘이므로 정렬 우선 필요
...(4) 메소드가 key와 동일한 인스턴스를 찾았다고 판단하는 기준은 Comparable 인터페이스 ......의 compareTo 메소드가 그 기준. compareTo 메소드의 호출을 통해서 0이 반환되면 ......key에 해당하는 인스턴스를 찾았다고 판단
※ 배열의 탐색 예시
제네릭(Generics)
.1) 제네릭의 이해 : 제네릭은 ‘일반화’를 의미한다. 일반화의 대상은 ‘자료형’이다.
.2) 자료형에 의존적이지 않은 클래스를 정의할 수 있다.
.3) 인스턴스 생성 시 T의 자료형을 결정하는 것이 ‘제네릭’이다.
.4) 예시 : Box aBox = new Box();
...(1) T 를 Apple로 결정하여 인스턴스 생성
...(2) Apple 또는 Apple을 상속하는 하위 클래스의 인스턴스 저장 가능
...(3) 타입 매개변수(제네릭 변수)
...(4) Box : 매개변수화 타입
...(5) : 타입 인자
※ 제네릭 예시
제네릭의 기본문법
.1) 다중 매개변수 기반 제네릭 클래스의 정의
...(1) 타입 매개변수의 이름은 짓기 나름이나 두가지 규칙을 지켜야 한다.
.......- 한 문자로 이름을 짓는다.
.......- 대문자로 이름을 짓는다.
※ 다중 매개변수 기반 제네릭 클래스의 정의 예시
.2) 기본 자료형에 대한 제한 그리고 래퍼 클래스
...(1) 제네릭 클래스에 대하여 ‘매개변수화 타입’을 구성할 때 기본자료형의 이름은 ‘타입 인
.......자’로 쓸 수 없다.
※ 기본 자료형에 대한 제한 및 래퍼 클래스 예시
.3) 타입 인자의 생략 : 다이아몬드(Diamond) 기호
...(1) 왼쪽을 보고 오른쪽의 빈 공간을 채운다. <> (Diamond 기호)
...(2) Box aBox = new Box();
......- Box aBox = new Box<>();
.4) 매개변수화 타입을 타입 인자로 전달하기
...(1) Box과 같은 ‘매개변수화 타입’이 ‘타입 인자’로 사용이 될 수 있다.
※매개변수화 타입을 타입 인자로 전달하기 예시
.5) 제네릭 클래스의 타입 인자 제한하기
...(1) 타입인자를 제한하여 메소드를 호출할 수 있다.(EX, Number -> intValue)
※제네릭 클래스의 타입 인자 제한하기 예시
.6) 제네릭 클래스의 타입 인자를 인터페이스로 제한하기
※제네릭 클래스의 타입 인자를 인터페이스로 제한하기 예시
제네릭 메소드의 정의
.1) 일부 메소드에 대해사면 제네릭으로 정의하는 것도 가능하다.
.2) public static Box makeBox(T o) {...}
...(1) static과 Box 사이에 위치한 는 T가 타입 매개변수임을 알리는 표시
...(2) Box가 반환형
...(3) 제네릭 메소드는 메소드 호출시에 자료형이 결정된다.
......- Box sBox = BoxFactory.makeBox(“Sweet”);
※제네릭 메소드 정의 예시
.3) 제네릭 메소드의 제한된 타입 매개변수 선언
※제네릭 메소드의 제한된 타입 매개변수 선언