Comparable 구현
publicstaticList<Person> arr = newArrayList<>();
Collections.sort(arr);
privatestaticclassWordimplementsComparable<Word> {
privateIntegerlength;
privateStringstr;
publicWord(Stringstr) {
this.length = str.length();
this.str = str;
}
@OverridepublicintcompareTo(Wordo) {
if (this.length < o.length) {
return -1;
} elseif (this.length == o.length) {
returnthis.str.compareTo(o.str); //동일한 단어라면 0이 리턴되고 중복이 제거되고 저장된다. 그리고 알파벳 순서로 정렬됨
} else {
return1;
}
}
}Comparator 정렬기준
// arrayArrays.sort(arr, Comparator.comparingInt(a -> a[1])); // a[1]를 기준으로 오름차순 정렬// liststringList.sort((num1, num2) -> (num2 + num1).compareTo(num1 + num2)); // 30, 3 -> 303, 330 중 330이 먼저
- sorted() - new Comparator
importjava.util.Arrays;
importjava.util.Comparator;
publicclassN12915 {
privateintN;
publicString[] solution(String[] strings, intn) {
N = n;
String[] results = Arrays.stream(strings).sorted(newComparator<String>() {
@Overridepublicintcompare(Stringo1, Stringo2) {
intresult = o1.charAt(n) - o2.charAt(n);
if (result == 0) {
returno1.compareTo(o2);
}
returnresult;
}
}).toArray(String[]::new);
returnresults;
}
}Multi 정렬 - thenComparing
fileNameList.sort(Comparator.comparing(FileName::getHead).thenComparing(Comparator.naturalOrder()));
Comparable 구현
Comparator 정렬기준
Multi 정렬 - thenComparing