자바기초(Comparable 인터페이스)

bitna's study note·2022년 4월 28일
0

자바

목록 보기
60/119

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();
		}

	}

}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보