>Java >java지도 시간 >목록에서 요소를 제거하면 UnsupportedOperationException이 발생하는 이유는 무엇입니까?

목록에서 요소를 제거하면 UnsupportedOperationException이 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-30 21:51:10496검색

Why Does Removing Elements from a List Throw an UnsupportedOperationException?

UnsupportedOperationException: 목록에서 요소 제거

list.remove(index)를 사용하여 목록에서 요소를 제거하려고 하면 다음이 발생할 수 있습니다. UnsupportedOperationException이 발생합니다. 이 오류는 Arrays.asList()에서 반환된 고정 크기 목록의 사용으로 인해 발생합니다.

Arrays.asList()는 고정 크기 목록을 반환합니다

배열 .asList()는 주어진 배열이 지원하는 목록을 생성합니다. 이 목록은 변경할 수 없으며 요소 추가 또는 제거와 같은 구조적 수정을 지원하지 않습니다.

수정:

이 문제를 해결하려면 제거를 허용하는 변경 가능한 목록 구현을 사용하세요. 예를 들어 LinkedList를 사용할 수 있습니다.

List<String> list = new LinkedList<>(Arrays.asList(split));

정규 표현식으로 분할

split() 메서드는 정규 표현식과 함께 문자열을 분할하는 데 사용됩니다. 파이프 문자(|)는 리터럴로 사용될 때 이스케이프해야 하는 정규식 메타 문자입니다.

수정:

리터럴 파이프 문자로 분할하려면 이스케이프하세요. 이중 백슬래시를 사용합니다.

template.split("\|")

최적화 알고리즘

remove()를 반복적으로 호출하는 대신 더 효율적인 알고리즘을 고려하십시오.

  1. 0부터 list.size()까지의 범위 내에서 임의의 숫자 배열을 생성합니다. - 1.
  2. 숫자를 오름차순으로 정렬합니다.
  3. 다른 목록을 만들고 정렬된 숫자를 반복하면서 목록을 반복합니다.
  4. 정렬된 목록의 현재 숫자 인덱스가 목록의 요소 인덱스와 일치하면 목록에서 제거()를 호출하여 요소를 제거합니다.

이 알고리즘은 O(N) 시간에 실행됩니다. 여기서 N은 목록의 크기로 원래 접근 방식보다 훨씬 빠릅니다.

위 내용은 목록에서 요소를 제거하면 UnsupportedOperationException이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.