반응형
오류원인
Arrays.asList() 메소드는 고정길이의 원배열의 list view를 리턴합니다.
즉, 고정길이인 원래 배열의 list view를 리턴하기 때문에
Arrays.asList()를 사용해서 배열을 List로 변환한 후, 길이를 List에 값을 추가하는 것이 불가능하고,
원래 배열의 값을 변경하면 List의 값도 같이 변경됩니다.
public class anything {
public static void main(String[] args) {
Integer[] arr = {1,2,3,4,5};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);
list.add(1);
}
}
//출력
[1, 2, 3, 4, 5]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:155)
at java.base/java.util.AbstractList.add(AbstractList.java:113)
at 연습.연습6.anything.main(anything.java:10)
해결법
이렇게 원본 배열의 값과 변환 된 List의 값이 동기화 되는 것을 막기 위해서
Arrays.asList()로 변환한 List로 새로운 ArrayList 객체를 생성해서 사용할 수 있습니다.
public class anything {
public static void main(String[] args) {
Integer[] arr = {1,2,3,4,5};
List<Integer> list = new ArrayList<>(Arrays.asList(arr));
list.add(1);
System.out.println(list);
}
}
//출력
[1, 2, 3, 4, 5, 1]
반응형
'error , solution' 카테고리의 다른 글
[Java17] javax.xml.bind.DatatypeConverter 오류 해결 (0) | 2023.10.26 |
---|---|
Execution failed for task ':test'.> No tests found for given includes: (--tests filter) 테스트 에러 (0) | 2023.10.12 |
인텔리제이 error : 클래스를 찾거나 로드할 수 없습니다. (0) | 2023.08.02 |
Ngrok cors에러 해결하는 방법 (0) | 2023.05.10 |
포트가 이미 사용 중 일 때 확인 방법 및 중지하는 방법 (0) | 2023.04.05 |