관하여subList() 사용 중 발생한 문제
1. 소개:java.util.List에는 subList() 방법이 있습니다.
List 컬렉션의 뷰 중 일부를 반환하는 역할을 합니다.
2. 예: List.subList(int fromIndex, int toIndex);
List에서 객체의 일부 컬렉션을 반환합니다. 즉, 반환된 컬렉션은 List입니다.
의 하위 집합이며 다음 색인 값을 가져옵니다.
부모 집합 List는 fromIndex로 시작하고, toIndex로 끝납니다.
부분은 되돌아오는 하위 집합이다.
시작된 하표와 끝난 하표가 모두 포함될 줄 알았는데, 결과적으로 하표를 끝낼 때의list입니다.size( )-1 ;결과는 하나를 빠뜨린 셈이다.
또 다른 질문이 있습니다.
캡처된list를 얻으면 이전의 데이터 원본list가 바뀔 수 있습니다
List oneDaysList = daysList.subList(0, onepageEndPosition);
oneDaysList.addAll(0, falseOnePageList(onePageLack));
이 원데이 리스트는 캡처한 결과를 받았습니다. 데이터를 받기 위해 새로운list를 만들어야 합니다.캡처한 후에 원데이 리스트가 데이터를 추가했기 때문에 데이즈 리스트의 데이터도 함께 데이터를 바꿨다.
수정 후 데이터:
List oneDaysList = daysList.subList(0, onepageEndPosition);
List aaa=new ArrayList();
aaa.addAll(0, falseOnePageList(onePageLack));
aaa.addAll(oneDaysList );
java.util.리스트의 일부분을 되돌려 주는 subList 방법이 있습니다.
List subList(int fromIndex, int toIndex);
이것은 원래list의 [fromIndex, toIndex) 사이의 이 부분의 보기를 되돌려줍니다. 보기라고 하는 것은 실제적으로list가 원래list에 의해 지원되기 때문입니다.
따라서 원래의list와 되돌아온list에 대한'비구조적 수정'(non-structural changes)은 서로에게 영향을 미친다.
이른바'비구조적 수정'은list의 크기 변화와 관련이 없는 수정을 가리킨다.반면 구조적 수정은list 크기가 바뀐 수정을 가리킨다.
그렇다면 구조적 수정이 언급되면 어떻게 될까?
만약 구조적인 수정이 되돌아오는 서브리스트가 발생한다면 원래의list의 크기도 변화할 수 있다.
구조적인 수정이 원래의list(되돌아오는 하위 list로 인한 변화는 포함되지 않음)이라면 되돌아오는 하위 list의 의미는undefined가 될 것이다.AbstractList(ArrayList의 부류)에서 undefined의 구체적인 표현 형식은 하나의 Concurrent Modification Exception을 던지는 것이다.
따라서sublist를 호출해서 하위 리스트를 되돌려준 후에 원래 리스트의 크기를 수정하면 이전에 생성된 하위 리스트는 효력을 상실하고 사용할 수 없습니다.
전재:https://www.cnblogs.com/liujinhong/p/6504334.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.