Java

Java List UnsupportedOperationException

Darane 2020. 4. 23. 09:40

List를 사용하다가 add() 나 remove() 함수를 쓸 때 UnsupportedOperationException 이 발생할 경우가 있다.

List의 생성 방법에 따라 add(), remove() 사용 시, Exception을 발생할 수 있다. 예제로 살펴보자

 

1. 예제

List<String> list = Arrays.asList("dog", "cat");
list.add("horse");
list.remove("dog");

 

Exception

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.base/java.util.AbstractList.add(AbstractList.java:153)
	at java.base/java.util.AbstractList.add(AbstractList.java:111)
	at test/test.Manager.main(Manager.java:13)

 

Arrays.asList()로 List를 생성하고 List에 값을 추가나 삭제하는 경우 UnsupportedOperationException이 발생한다.

Arrays.asList()의 API 문서를 보면 사이즈가 고정(fixed-size list)된 List 객체를 return 해주는 것을 알 수 있다.

실제로 Arrays.asList()가 반환된 list의 add()나 remove()가 구현되어 있지 않은 것을 볼 수 있다.

 

2. 해결방법

객체 수정이 구현되어 있는 ArrayList <>(또는 Vector, LinkedList)를 사용하면 해결된다.

ListList<String> list = new ArrayList<>(Arrays.asList("dog", "cat"));
list.add("horse");
list.remove("dog");

 

반응형