본문 바로가기

PL/JAVA

[JAVA] Java Comparable, Java Comparator

 

따라서 우리가 임의로 만든 클래스에서도 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