코딩테스트를 풀다가 어이없는 실수로 한참을 헤맸다.
다음 코드에서 이상한 점을 발견해 보라.
int[] alpha = new int[26];
Stream.of(alpha).sorted(Comparator.reverseOrder()) //후략...
자꾸 컴파일 에러가 나는 것이다.
왜지?... 한참 삽질하고 ChatGPT형님한테도 물어보고 한 결과,
(ChatGPT가 틀린 답을 주었다. 처음봤다.)
참 나의 어이없는 실수였다.
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
리턴 값을 보면 알 수 있다.
즉 나의 위 코드는
Stream<int[]>
를 반환하는 코드였던 것이다. 당연히 안되는게 당연하다.
내가 원하는건 Stream<int>
이다.
올바른 코드는 아래와 같다,
int[] ints = Arrays.stream(alpha)
.boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(Integer::intValue)
.toArray();