특정 메서드를 사용하기위해서 주어진 배열을 리스트로 변환해야하는데, 이 부분을 stream을 이용해 한 줄로 진행하려하면 매번 그랬듯이 뭔가 막혔다.
그래서 반복문을 사용해 값을 그대로 대입해주고 난 후 진행했는데 특정 테스트케이스에서 틀렸다. 이유를 모르겠어서 다른 풀이를 보고 공부한다.
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
class Solution {
public Integer[] solution(int[] numlist, int n) {
List<Integer> solution = IntStream.of(numlist).boxed().collect(Collectors.toList());
solution.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int o1Abs = Math.abs(o1 - n);
int o2Abs = Math.abs(o2 - n);
if (o1Abs == o2Abs) {
if (o1 > o2) return -1;
else if (o1 < o2) return 1;
} else {
return o1Abs - o2Abs;
}
return 0;
}
});
return solution.toArray(new Integer[0]);
}
}
초반에
String[] arr = { "A", "B", "C" };
// 배열 -> List로 변환
List<String> list = Stream.of(arr).collect(Collectors.toList())
위 코드를 참고해서 '배열 -> 리스트' 변환을 시도했는데 틀렸었다.