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