4월 28일 내용정리
오늘 푼 문제중에 Arrays.sort를 이용하여 정렬 하는 문제가 나옴
Arrays.sort는 기본형타입 정렬시 사용하는 메서드
기본형 타입(int, String...)은 정렬의 기준점이 있어서 알아서 정렬을 해주나 객체형 타입(=클래스형타입)은 정렬 기준이 없어서 정렬을 못함.
Comparable 인터페이스
객체의 정렬 기준을 정의하는 방법으로써 정렬하고싶은 클래스에 Comparable 인터페이스를 구현하도록 하는것!
Comparable 인터페이스에는 compareTo() 메서드를 통해 인자로 넘어온 같은 타입의 다른 객체와 대소 비교가 가능함.
메서드를 호출하는 객체 <인자로 넘어온 객체 ->음수 리턴
크기가 동일하다면 0,
인자로 넘어온 객체 <메서드를 호출하는 객체 -> 양수 리턴
"return this.price - b.price;"
비교해서 작은수 부터 정렬됨.
자식 클래스
package study_0427_03;
public class Book implements Comparable<Book>{
//필드 선언
int price;
//셍성자
Book(){}
Book(int price){
this.price=price;
}
//메서드
void show() {
System.out.println("Book [price="+price+"]");
}
@Override
public int compareTo(Book b) {
return this.price - b.price;
}
}
실행 클래스
package study_0427_03;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Book [] books = {new Book(15000), new Book(50000),new Book(20000)};
System.out.println("====정렬 전====");
for(Book b:books) {
b.show();
}
System.out.println("====정렬 후====");
Arrays.sort(books);
for(Book b:books) {
b.show();
}
}
}