Integer[] qu = new Integer[size];
for (int i = 0; i < size; i++) {
qu[i] = i + 1;
}
List<Integer> queue = Arrays.asList(qu);
// 문제가 뜨는 코드 - 예시
queue.remove(3);
// Exception in thread "main" java.lang.UnsupportedOperationException
일반적으로 값을 세팅하고, 변경하지 않을 거라면 위와 같이 List형을 Arrays.asList로 초기화해도 아무런 문제가 없으나, new로 생성하지 않는 List의 값을 변경하려 한다면 UnsupportedOperationException 에러가 발생한다. 따라서 new 로 초기화 해주어야 위와 같은 오류가 발생하지 않는다.
수정방향
Integer[] qu = new Integer[size];
for (int i = 0; i < size; i++) {
qu[i] = i + 1;
}
List<Integer> queue = new ArrayList<>(Arrays.asList(qu)); <-- 새로운 객체를 생성
에러가 나지 않고 잘 컴파일 된다!