Comparable 인터페이스는 Array/ArrayList 를 알파벳순 혹은 숫자 오름차순/내림차순으로 정렬해주는 역할을 합니다. 사용을 위해서는 아래와 같이 Collections 클래스를 import 해줍니다.
import java.util.Collections;
먼저 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]
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; //나이-내림차순