📍 Comparator< T > 정렬
✔ 코드
Arrays.sort(files, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int result = o1.compareTo(o2);
if(result == 0) {
}
return result;
}
});
+ 람다식 코드
Arrays.sort(files, (o1, o2) -> {
int result = o1.compareTo(o2);
if(result == 0) {
}
return result;
});
✔ 문제 응용 예시 (프로그래머스: 파일명 정렬)
import java.util.*;
class Solution {
public String[] solution(String[] files) {
Arrays.sort(files, (f1, f2) -> {
String h1 = f1.split("[0-9]")[0];
String h2 = f2.split("[0-9]")[0];
int result = h1.toLowerCase().compareTo(h2.toLowerCase());
if(result == 0)
result = getNum(f1, h1) - getNum(f2, h2);
return result;
});
return files;
}
static int getNum(String file, String head) {
file = file.replace(head, "");
String result = "";
for(char c : file.toCharArray()) {
if(!Character.isDigit(c)
|| result.length() > 5) break;
result += c;
}
return Integer.parseInt(result);
}
}
문자열 배열.toCharArray() : 한 문자씩 나뉘어 배열 생성
Character.isDigit(c) : 해당 문자가 숫자인지 판별