java 에서의 정렬
primitive type
Arrays 클래스가 primitive 타입 데이터를 위한 정렬 메소드를 제공한다.
Arrays.sort(data)
data 배열이 꽉 차있는 경우
Arrays.sort(data, 0, size)
정렬을 원하는 시작점과 원하는 개수를 매개변수로 추가해준다.
int 이외에 다른 primitive 타입의 데이터도 지원한다.
double, char
string array
Arrays.sort(data)
사전식 순서로 데이터 정렬
string arrayList
collection 계층 하에 있는 ArrayList 와 같이 Collection 유형으로 저장한 상태라면 Collections.sort(data) 로 정렬한다.
사용자 정의 객체
Fruit 라는 클래스를 정의했다고 가정해보자.
name, quantity 등의 필드가 존재한다.
Arrays.sort(fruits) 의 결과는 매우 모호해진다.
어떤 기준으로 정렬을 할 것인지 기준이 없는 상태!
어떤 값이 크고 작은지 그 기준이 나와있지 않다면, 정렬의 결과가 모호해진다.
방법 1. comparable interface 를 구현한다
아래는 이름값을 기준으로 정렬 규칙을 정의한 예이다.
compareTo() return 값이
음수면 내가 더 작고
0이면 같고
양수면 내가 더 크다.
방법 2. Comparator interface 를 사용한다
만약 과일을 정렬하는 방법을 어떨 때에는 이름순으로, 어떨 때에는 재고순으로 정렬하고 싶다면 comparator 를 사용한다.
comparator 를 정의할 때에는 익명 클래스로 만들어 바로 인스턴스 객체로 받을 수 있도록 한다.
comparator 들은 어디에다가 정의할 것인가?
보통은 fruit 클래스 내부에 아예 static 한 클래스 멤버로 가지도록 한다.
Last updated