따라서 우리가 임의로 만든 클래스에서도 Comparable 인터페이스를 구현하기 위해서는 compareTo()를 재정의해줘야 한다.
닉네임순으로 정렬하고 싶다면 아래와 같이 nickname 으로 compareTo를 재정의한다.
package compare;
public class MapleStoryUser implements Comparable<MapleStoryUser> {
private String nickName;
// 닉네임
private String guildName;
// 길드명
private int level;
//레벨
private int money;
// 보유 메소
//생성자
public MapleStoryUser(String nickName, String guildName, int level, int money) {
this.nickName = nickName;
this.guildName = guildName;
this.level = level;
this.money = money;
}
//Getter Setter
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getGuildName() {
return guildName;
}
public void setGuildName(String guildName) {
this.guildName = guildName;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
@Override
public int compareTo(MapleStoryUser user) {
return this.nickName.compareTo(user.getNickName());
}
}
compareTo는 비교하는 메서드로써, 좌측에 있는 값과 매개변수로 들어오는 값을 비교하여
동일하면 0, 기존값이 크면 1, 매개변수값이 크면 -1을 반환한다.
위에 다루었던 Arrays.sort() 나 Collections.sort()가 이 compareTo()의 리턴값을 이용하여 순서를 바꾸는 것이다.
오름차순 정렬을 위해서는
this > target 을 확인하고 true라면 1을 반환하여 서로 바꿔준다.
@Override
public int compareTo(MapleStoryUser user) {
return ((Integer)money).compareTo((Integer)(user.getMoney()));
}
Java Comparable, Java Comparator 자바 정렬 개념 정리
#개요 자바 정렬 관련해서 여기저기 포스트를 찾아보다 가장 직관적으로 잘 설명된 블로그를 발견했다. 나도 겉핥기식으로만 알고있었던 지라 한번 따라하면서 정리할 겸 별도로 내 식대로 정
suzxc2468.tistory.com
'PL > JAVA' 카테고리의 다른 글
[JAVA] 우선순위 큐(Priority Queue), 오름차순(기본), 내림차순 (0) | 2021.11.25 |
---|---|
[JAVA] exe파일 실행, Java에서 cmd 사용하기 (0) | 2021.08.31 |
[JAVA] 배열 오름차순 정렬 (0) | 2020.11.20 |
[JAVA] ArrayList 메소드 (0) | 2020.11.07 |
[JAVA] StringTokenizer 구분자 여러개 (0) | 2020.09.03 |