Arrays.asList()에 의해 작성된 목록의 remove()가 UnsupportedOperation을 슬로우합니다.예외.
컬렉션이 있습니다.c1<MyClass>및 배열a<MyClass>어레이를 컬렉션으로 변환하려고 합니다.c2하고 있다c1.removeAll(c2)하지만 이것은 던진다.UnsupportedOperationException제가 찾은 바로는asList()of ArraysArrays.ArrayListclass 및 이 클래스는 class를 상속합니다.removeAll()부터AbstractList()그 구현이 실패하는UnsupportedOperationException.
Myclass la[] = getMyClass();
Collection c = Arrays.asList(la);
c.removeAll(thisAllreadyExistingMyClass);
요소를 제거할 수 있는 방법이 있습니까?제발 도와주세요.
Arrays.asLista를 반환하다List어레이를 감싸고 있습니다.이 래퍼의 크기는 고정되어 있으며 어레이에 의해 직접 지원되므로set어레이를 수정하고 목록을 수정하는 다른 메서드에서는 rown이 발생합니다.UnsupportedOperationException.
이 문제를 해결하려면 래퍼 목록의 내용을 복사하여 수정 가능한 새 목록을 만들어야 합니다.이것은, 를 사용해 간단하게 실시할 수 있습니다.ArrayList를 사용하는 컨스트럭터Collection:
Collection c = new ArrayList(Arrays.asList(la));
네, 그...Arrays.asList(..)는 확장 또는 축소할 수 없는 컬렉션입니다(원래 어레이에 의해 백업되며 크기를 조정할 수 없기 때문입니다).
요소를 제거하려면 다음 중 하나를 작성하십시오.new ArrayList(Arrays.asList(..)또는 어레이에서 직접 요소를 삭제(효율성이 떨어지고 쓰기 어려움)
그렇게 하는 거야Array.asList()어레이에 의해 직접 백업되기 때문에 동작합니다.완전히 수정 가능한 목록을 가져오려면 컬렉션을 직접 만든 컬렉션으로 복제해야 합니다.
Collection c = new ArrayList(Arrays.asList(la))
언급URL : https://stackoverflow.com/questions/7885573/remove-on-list-created-by-arrays-aslist-throws-unsupportedoperationexception
'programing' 카테고리의 다른 글
| Vue 컴포넌트의 맵을 동적으로 갱신할 필요가 있다 (0) | 2023.01.27 |
|---|---|
| Laravel 웅변가:조인된 테이블에서 특정 열만 가져오는 방법 (0) | 2023.01.17 |
| Spring Data REST에 @OneToMany 서브 리소스 연결 게시 (0) | 2023.01.17 |
| org.w3c.dom을 로드하려면 어떻게 해야 하나요?XML에서 문자열로 문서를 작성하시겠습니까? (0) | 2023.01.17 |
| yaml: 행 8: 예상된 키를 찾을 수 없습니다. (0) | 2023.01.17 |