2012-11-09 2 views
1

제목 전체 내용 :지정된 키를 가진 항목이 이미 존재하더라도 액세스 순서가 지정된 LinkedHashMap에 put()이 구조적으로 수정 되었습니까?

문서에 약간의 모호성이 있습니다. 처음에는 설명서가 삽입 순서의 LinkedHashMap에 대해 이야기하고 이미 매핑 된 항목을 삽입 할 때 반복 순서가 영향을받지 않는다고 설명합니다.

그런 다음 액세스 순서가 지정된 LinkedHashMap을 소개하고 "get은 구조 수정"이라는 사실을 주장합니다. 즉 반복 순서에 영향을줍니다.

그러나 기존 항목의 put() ''이 구조 수정인지 여부는 명확하지 않습니다.

답이 예라고 생각합니다. 코드의

+0

가장 좋은 방법은 그냥 사용해 보는 것입니다. 그것은 매우 간단해야합니다. –

답변

3

이 간단한 조각이 귀하의 질문에 대답해야합니다

final Map<String, String> x = new LinkedHashMap<>(10, 0.75f, true); 
x.put("a", "a"); 
x.put("b", "b"); 
System.out.println(x); 
x.put("a", "a"); 
System.out.println(x); 

인쇄

{a=a, b=b} 
{b=b, a=a} 

해석 : 심지어 같은 값으로 기존의 키에 put, 구조적인 변경이다.

+0

+1 문서에 "액세스 순서"라고 쓰여있어 읽고 쓰는 것을 의미합니다. –

+1

@PeterLawrey 대문자로 쓰는 경우는 아무 것도 쓰지 않아도되지만, 암묵적으로이를 읽어야합니다. –

+0

HashMap은 키를 업데이트 할 때 약간 바보입니다. 처음 엔 새로운 엔트리를 만들고 그 다음에 어딘가에 넣어서 (또는 원래의 것을 대체하기 위해) 타이어를 붙인다. –

관련 문제