Colelction.unmodifiableMap은 반복 순서를 보호합니까?Collection.unmodifiableMap 반복 순서
newMap.put (key, Collections.ModifiableMap (oldMap)) 시도 중 그러면 newMap.get (key)를 수행하고 반복 할 때 반복 순서가 변경된 것 같습니다.
반복 순서를 어떻게 보호 할 수 있습니까?
Colelction.unmodifiableMap은 반복 순서를 보호합니까?Collection.unmodifiableMap 반복 순서
newMap.put (key, Collections.ModifiableMap (oldMap)) 시도 중 그러면 newMap.get (key)를 수행하고 반복 할 때 반복 순서가 변경된 것 같습니다.
반복 순서를 어떻게 보호 할 수 있습니까?
체크 아웃 Collections.unmodifiableSortedMap. 그렇게하면지도에 대한 읽기 전용보기가 제공되고 정렬 된 키 순서가 유지됩니다.
UnmodifiableMap은 모든 메소드를 위임하기 만합니다. 순서는 대리인의 순서입니다.
첫 번째 컬렉션과 동일한 순서가 필요할 경우 LinkedHashMap을 사용하십시오.
사실, LinkedHashMap을 사용하고 있습니다. – Chandra
Collections.unmodifiableMap의 소스를 살펴보면 UnmodifiableMap 클래스에 전달된다는 것을 알 수 있습니다. UnmodifiableMap 클래스는 단순히이를 래핑합니다. 따라서 기본지도의 순서는 변경되지 않습니다.
그리고 unmodifiableMap
에 대한 설명서에 따라 그것을 말한다
는 지정된 맵의 변경 불가능한 뷰를 돌려줍니다. 그것은이 보기를 반환 말한다 때문에
, 우리가 다른지도, 오래 된지도에 액세스 할 수 단지 다른 방법을 못하고 있다는 것을 의미한다.
동일하지만 수정 불가능한 맵이 실제 색상을 드러 냈습니다. 내가 그것을 시도했을 때 :) – Chandra
저자는 주석에 대해서만 언급했지만 SortedMap과는 다른 반복 순서를 갖는 LinkedHashMap을 사용하고 있습니다. 'Collections.unmodifiableSortedMap'는 java.util.Collections 클래스의 메소드 unmodifiableSortedMap을 주어진 타입에 적용 할 수 없습니다. [오류] 필수 : java.util.SortedMap [오류] 이유 : 유형 변수 K, V를 추론 할 수 없습니다 [오류] (인수 불일치, 링크 불일치, java.util.LinkedHashMap (java.lang.String, java.lang.Class> java.util.SortedMap )로 변환 할 수 없습니다. –
yegeniy