-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
Comparable 구현
- List
public static List<Person> arr = new ArrayList<>();
Collections.sort(arr);
private static class Word implements Comparable<Word> {
private Integer length;
private String str;
public Word(String str) {
this.length = str.length();
this.str = str;
}
@Override
public int compareTo(Word o) {
if (this.length < o.length) {
return -1;
} else if (this.length == o.length) {
return this.str.compareTo(o.str); //동일한 단어라면 0이 리턴되고 중복이 제거되고 저장된다. 그리고 알파벳 순서로 정렬됨
} else {
return 1;
}
}
}Comparator 정렬기준
// array
Arrays.sort(arr, Comparator.comparingInt(a -> a[1])); // a[1]를 기준으로 오름차순 정렬
// list
stringList.sort((num1, num2) -> (num2 + num1).compareTo(num1 + num2)); // 30, 3 -> 303, 330 중 330이 먼저- sorted() - new Comparator
import java.util.Arrays;
import java.util.Comparator;
public class N12915 {
private int N;
public String[] solution(String[] strings, int n) {
N = n;
String[] results = Arrays.stream(strings).sorted(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int result = o1.charAt(n) - o2.charAt(n);
if (result == 0) {
return o1.compareTo(o2);
}
return result;
}
}).toArray(String[]::new);
return results;
}
}Multi 정렬 - thenComparing
fileNameList.sort(Comparator.comparing(FileName::getHead).thenComparing(Comparator.naturalOrder()));