정리

Collections.sort(myList, new Comparator<int>() {
@Override
public int compare(int a, int b) {
return b - a;
}
});
Arrays.sort(arr, (a, b) -> b - a);
Collections.sort(list, (a, b) -> b - a);
어려웠던 것들

import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
long answer = 0;
String s = String.valueOf(n);
String[] arr = s.split("");
Arrays.sort(arr, Collections.reverseOrder());
s = "";
for (String a : arr) s += a;
answer = Long.parseLong(s);
return answer;
}
}
--> 예전에 C++로 편하게 .sort() 했던 것들인데..... 4시간 동안 풀었음..
그 이유는 우선 스트림을 사용해보고자 했는데
스트림을 가공하면서 형변환 이슈로 꼬이는 것들이 많았고
아직 스트림 클래스의 형 분류?와 (자꾸 타입이 맞지 않다며 에러가 난다) 위의 박싱 이슈 같은.
map을 사용한 매핑방법으로 스트림 요소의 형태를 바꿔야 하나 고민하다가 ~ mapToInt, mapToObj... 같은걸 사용해야 하는건지도 헷갈리고, 또 정작 원하는 mapToChar는 없는 것 같고.. <- 여기에서 스트림 사용을 중단.
일단 컬렉션을 사용하지 않으려고 했음. 문제의 자료가 숫자 하나만 받는 것이어서 가장 작고 간단한, 가벼운 코드를 만들려고 한 것 때문.
(long -> String -> Int -> char[] -> String -> long)
"컬렉션을 사용하지 않고" 숫자를 문자단위의 분리(char[])를 거치는 데 이 따위의 형 변환을 해야 했음. 너무 비효율적인 거 아닌가해서, 애초에 가벼운 코드를 만들고 싶었는데 원하는 방향성이 아니게 됨
위 두 가지를 고민했었고 찾지 못했음 😠 Collection.sort()와 String[].sort()는 많은데!
char[].sort()도 있겠거니 하고 찾아 헤맸는데 왜 안되는 것인가.. 논리적으로 같은 정렬 방법을 적용하면 될 것 같은데 이게 안 된다고?
원시형들은 일단 내가 얻은 지식 안에서는 안될 것 같다는 결론을 내림
그래서 결국
str[]에 담을 데이터를 String[]에 담는 방법을 채택하였더니 구글 검색에서 많이 볼 수 있었던 Arrays.sort()로 해결함
결론