일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sacai
- 제이쿼리
- Github
- 드로우
- draw
- react
- 오라클
- 덩크 하이
- jQuery
- 리눅스
- oracle
- dunklow
- 리액트
- Dunk Low
- 코로나19
- dunk high
- 덩크 로우
- 덩크로우
- Python
- 자바스크립트
- Linux
- 발매예정
- 주식공부
- JavaScript
- 주식
- 나이키
- stockx.com
- GIT
- 파이썬
- Nike
- Today
- Total
Life goes slowly...
[Java] 자바에서 객체 정렬하기 - Comparable, Comparator 본문
Java와 같은 객체 지향 프로그램 언어를 사용하게 되면 객체들을 기준에 맞춰서 정렬해야 하는 경우가 있습니다. 객체의 정렬 기준을 명시하는 방법에 따라서 Comparable 과 Comparator 두 가지 방법이 있습니다. 단순한 숫자나 문자와 같은 기본형 데이터는 사람들이 일반적으로 받아들이는 대소 비교라는 개념이 있으며, 그에 따라서 정렬을 할 수 있습니다. 하지만 특정 타입의 객체는 기본형 데이터와 다르게 정렬 기준이 없기 때문에 정렬을 할 수가 없어서 정렬 기준을 정의하여 하며 그에 따른 정렬 기준에 따라서 정렬하게 됩니다.
Comparable
정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메소드를 정의하는 인터페이스입니다. Java에서 제공되는 정렬 가능한 클래스는 모두 Comparable 인터페이스를 구현하고 있으며, 정렬 시에 이에 맞춰서 정렬이 수행되게 됩니다.
사용되는 Package : java.lang.Comparable
Comparable 인터페이스를 implements 하고 내부에 있는 compareTo() 메소드를 오버라이드 하여 원하는 정렬 기준대로 구현하여 사용할 수 있습니다. Java에서 제공되는 모든 정렬 클래스는 Comparable 인터페이스를 구현하고 있으며, Comparable 구현 내용에 맞춰서 정렬이 수행됩니다.
int[] scores = {899, 982, 1090, 982, 1018};
Arrays.sort(scores);
System.out.println(Arrays.toString(scores));
[899, 982, 982, 1018, 1090]
List<Player> players = new ArrayList<>();
players.add(new Player("Alice", 899));
players.add(new Player("Bob", 982));
players.add(new Player("Chloe", 1090));
players.add(new Player("Dale", 982));
players.add(new Player("Eric", 1018));
Collections.sort(players);
System.out.println(players);
[Player(name=Chloe, score=1090), Player(name=Eric, score=1018), Player(name=Bob, score=982), Player(name=Dale, score=982), Player(name=Alice, score=899)]
Comparator
정렬 가능한 클래스(즉 Comparable 인터페이스를 구현한 클래스)들의 기본 정렬 기준과 다르게 정렬하고 싶을 때 사용되는 인터페이스입니다. 주로 익명 클래스로 사용되며, 내림차순으로 정렬할 때 많이 사용됩니다.
사용되는 Package : java.lang.Comparator
Comparator 인터페이스를 implements 하고 내부에 있는 compare() 메소드를 오버라이드 하여 원하는 정렬 기준대로 구현하여 사용할 수 있습니다.
Comparator<Player> comparator = new Comparator<Player>() {
@Override
public int compare(Player a, Player b) {
return b.getScore() - a.getScore();
}
};
-----------------------------------------------------------------------
List<Player> players = new ArrayList<>();
players.add(new Player("Alice", 899));
players.add(new Player("Bob", 982));
players.add(new Player("Chloe", 1090));
players.add(new Player("Dale", 982));
players.add(new Player("Eric", 1018));
Collections.sort(players, comparator);
System.out.println(players);
[Player(name=Chloe, score=1090), Player(name=Eric, score=1018), Player(name=Bob, score=982), Player(name=Dale, score=982), Player(name=Alice, score=899)]
'프로그래밍 > Java' 카테고리의 다른 글
[Java] 자바의 폴더 생성 함수 - mkdir(), mkdirs() (2) | 2020.10.16 |
---|---|
[Java] java.lang.NullPointerException 원인 그리고 해결방법 (0) | 2020.10.14 |
[Java] 자바 로직 분리 - DAO / DTO / VO (0) | 2020.10.14 |
[Java] 자바 Log 유틸 - Apache Log4j (0) | 2020.10.13 |
[Java] 자바 - 현재 날짜,시간 조회하기 (0) | 2020.10.13 |
[Java] 자바 - 기본 정규식 표현 (0) | 2020.10.12 |
[Java] Java의 대소문자 변경함수 - toUpperCase(), toLowerCase() (0) | 2020.10.12 |
[Java] Struts2의 scheduler 시스템 - Quartz2 Library (0) | 2020.10.11 |