Java 프로그래밍 : 객체지향 (4) Comparable - 객체 정렬

준우·2022년 4월 19일
0

Java

목록 보기
4/30
post-thumbnail

Comparable

Comparable 인터페이스는 Array/ArrayList 를 알파벳순 혹은 숫자 오름차순/내림차순으로 정렬해주는 역할을 합니다. 사용을 위해서는 아래와 같이 Collections 클래스를 import 해줍니다.

import java.util.Collections;

Integer

먼저 Integer 형 ArrayList의 나열입니다.
Collections.sort(ArrayList 이름) 과 같은 형식으로 사용합니다.

Array의 경우에는 Arrays.sort(arr);

public class Main{
	ArrayList<Integer> integerList = new ArrayList<>();
    integerList.add(2);
    integerList.add(8);
    integerList.add(4);
}
Collections.sort(integerList);
// 작은 숫자부터 나열됨.

System.out.println(integerList);
// [2,4,8]

String

public class Main{
	ArrayList<String> StrList = new ArrayList<>();
    StrList.add("Abby");
    StrList.add("Cathy");
    StrList.add("Bobby");
}
Collections.sort(StrList);
// 알파벳순으로 나열됨.

System.out.println(StrList);
// [Abby, Bobby, Cathy]

사용자 정의 클래스

아래와 같은 ArrayList 가 있다. 이 경우에는 알파벳순으로 정렬할지, 오름차순으로 정렬할지, 내림차순으로 정렬할지 지정해야한다.

public class Main{
	ArrayList<Dog> dog = new ArrayList<>();
    dog.add("mimi","3");
    dog.add("chichi","1");
    dog.add("Hani","2");
}

아래 코드로 작성된 dog.java 파일이 있다고 하자. 제일 먼저 implements Comparable<class명> 과 같은 형태로 implements 해주어야 한다.
<>안에 class명을 입력하는 이유는 type 변수를 제한하기 위해서다.

public class Dog implements Comparable<Dog>{
	public final String name;
    public final int age;
    
    public Dog(String name, int age){
    	this.name = name;
    	this.age = age;
    }
    
    @Override
    public String toString(){
    	return name + " " + age + "살";
    }

그 다음, compareTo() 메소드로 정렬할 수 있다.

    @Override
    public int compareTo(Dog d){
    return name.compareTo(d.name); //이름-알파벳순
    //return age - d.age; // 나이-오름차순
    //return d.age - age; // 나이-내림차순
   	}

해당 코드를 기준으로 한 정렬 예시는 아래와 같다.

name.compareTo(d.name); //이름-알파벳순
age - d.age; 			//나이-오름차순 
d.age - age; 			//나이-내림차순

0개의 댓글