Java8 알파벳순서대로 정렬하기
by Glenn
Java8의 Stream API를 사용한 알파벳순서대로 정렬하기입니다.
sorted()
String alpha = "kashdfuihSDFKFCaaaWOYHaVBWIACmzxnGgvdfahgtgNdfsfhuaiwhVEHwetvavxISCDPAJ";
Arrays.stream(alpha.split(""))
.sorted()
.forEach(System.out::print);
//Result
//AABCCCDDEFFGHHIIJKNOPSSVVWWYaaaaaaaadddeffffggghhhhhiikmnssttuuvvvwwxxz
naturalOrder가 적용된 사전에 정의된 순서대로 정렬이됩니다.
String.CASE_INSENSITIVE_ORDER
String alpha = "kashdfuihSDFKFCaaaWOYHaVBWIACmzxnGgvdfahgtgNdfsfhuaiwhVEHwetvavxISCDPAJ";
Arrays.stream(alpha.split(""))
.sorted(String.CASE_INSENSITIVE_ORDER)
.forEach(System.out::print);
//Result
//aaaaaAaaaABCCCdDddDEefFFfffGggghhHhhhHiIiIJkKmnNOPsSsSttuuVvVvvWWwwxxYz
알바펫 순서대로 정렬이 되었지만, 대소문자가 섞여있습니다.
compareToIgnoreCase()
String alpha = "kashdfuihSDFKFCaaaWOYHaVBWIACmzxnGgvdfahgtgNdfsfhuaiwhVEHwetvavxISCDPAJ";
Arrays.stream(alpha.split(""))
.sorted((o1, o2) -> {
int res = o1.compareToIgnoreCase(o2);
return (res == 0) ? o1.compareTo(o2) : res;
})
.forEach(System.out::print);
//Result
//AAaaaaaaaaBCCCDDdddEeFFffffGgggHHhhhhhIIiiJKkmNnOPSSssttuuVVvvvWWwwxxYz
대소문자 구분없이 비교후, 같을경우 compareTo() 사용하여 naturalOrder 적용
다를경우 compareToIgnoreCase()가 적용
소문자를 먼저 출력하고 싶다면 o1.compareTo(o2) -> o2.compareTo(o1)로 변경하면 됩니다.
추가로 정렬된 알파벳을 다시 String으로 얻을려면 다음과같이
collect()를 사용하여 합쳐주면됩니다.
String alphaSorted = Arrays.stream(alpha.split(""))
.sorted((o1, o2) -> {
int res = o1.compareToIgnoreCase(o2);
return (res == 0) ? o1.compareTo(o2) : res;
})
.collect(Collectors.joining());
Subscribe via RSS