Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Spring
- 토비의스프링3.1
- java
- ApplicationContext
- 프록시
- JPA
- 토비의스프링
- 클린코드
- FunctionalInterfaces
- AutoConfiguration
- springboot
- 컴퓨터시스템
- 빌드툴
- hibernate
- springwebmvc
- 링커
- DesignPattern
- gradle
- exception
- 자바
- lambda
- ORM
- DispatcherServlet
- 링킹
- IOC
- String
- beanfactory
- Kotlin for Java Developers
- 메이븐
- Immutable
Archives
- Today
- Total
엔지니어로 가는 길
JAVA 두 개 이상의 정렬 기준을 지원하는 방법: Comparator 본문
728x90
primitive 타입이 아니라 사용자 정의 객체인 경우 어떤 객체가 더 큰지 사용자가 기준을 명시해주어야 한다. Java에서는 이를 위해 Comparable이라는 interface를 지원한다. 즉, 사용자 객체가 Comparable interface를 구현하고 있으면 그 객체는 마치 primitive 타입처럼 비교 기준이 세워져있음을 뜻하므로 Java API가 제공하는 정렬 기능을 사용할 수 있다.
예를 들어 Fruit이라는 객체가 이름과 재고라는 두 가지 필드를 가지고 있고, Comparable을 구현하여 compareTo를 이름이 더 빠른 것이 더 크다고 재정의했다면 Fruit 배열이 있을 때 Arrays.sort에 Fruit 배열을 인자로 넘겨주어 정렬시킬 수 있다. (Collection interface의 하위 클래스라면 Collections.sort에 인자로 넘겨 정렬시킬 수 있다.)
하지만 때로는 이름으로 때로는 재고로 정렬 기준을 적용해야 한다면 어떻게 해야할까? 즉, 두 가지 이상의 정렬 기준이 필요하다면 어떻게 해야할까? compareTo를 overload 할 수는 없다. 왜냐하면 return type과 매개변수의 개수, 매개변수의 type이 모두 동일하기 때문이다.
두 가지 이상의 정렬 기준을 사용하고 싶으면 Comparator interface를 사용해야 한다. 사용 방법은 아래와 같다.
728x90
'프로그래밍 > Java' 카테고리의 다른 글
논리 연산자 &, |와 &&, ||의 차이 (0) | 2020.04.10 |
---|---|
언어로서의 자바, 플랫폼으로서의 자바 (0) | 2020.03.29 |
Java ConcurrentModificationException 해결하기 (0) | 2020.02.07 |
Java 객체를 생성하는 방법 (0) | 2020.01.26 |
Java Enum도 하나의 클래스이다 (0) | 2020.01.21 |
Comments