개발/자바
[자바/java] 배열,리스트 정렬 (Comparable, Comparator)
Walon_
2021. 8. 27. 17:21
※ Arrays.sort
- 배열의 숫자, 알파벳, 한글을 오름차순(natural ordering/자연스러운 순서)로 정렬
※ Collections.sort
- ListCollection일 경우 (ArrayList, LinkecList, Vector 등)
Comparable, Comparator
※ Comparable
- 정렬할 class내부에 정의하여 그 규칙에 맞게끔 정렬
※ Comparator
- 따로 comparator를 만들어 정렬시 comparator를 바꿔가면서 정렬가능
public static class Friend implements Comparable<Friend>{
private String name;
private int age;
public Friend(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int compareTo(Friend o) {
return this.age - o.age;
}
}
Collections.sort(friends); //List
Arrays.sort(friends); //배열
public static class SortFriendByNameInAsc implements Comparator<Friend>{
@Override
public int compare(Friend o1, Friend o2) {
if(o1.x > o2.x){
return 1;
}
}
}
Collections.sort(friends, new SortFriendByNameInAsc());
comparable : https://www.acmicpc.net/source/23811051
comparator : https://www.acmicpc.net/source/23812760
============================================================================
※ comparator를 사용과 동시에 정의가능
Arrays.sort(arr, (e1,e2)->{
if(e1.length() > e2.length()){
return 1;
}else{
return -1;
}
});