2013-08-27 1 views
0

map에서 나는 keys을 복제하지만 여전히 키 복제의 런타임 예외는 없습니다. 왜 그래야만하지 ?키 중복에 대한 런타임 예외가 발생하지 않는 이유는 무엇입니까?

지도 데이터 구조에는 중복 키가있을 수 없습니다.

import java.util.*; 

class KeyTest { 
    public static void main(String args[]) { 
     Map<String,String> map = new HashMap<String,String>(); 
     map.put("key-1","val"); 
     map.put("key-1","val"); 
     map.put("key-1","val"); 
     map.put("key-1","val"); 
     map.put("key-1","val"); 
    } 
} 
+3

왜 예외가 발생해야합니까? 왜 그걸 원할거야? 문서에서 무엇을 말합니까? –

답변

5

당신은 어떤 exception .IT 그냥 key와 기존 value를 대체하지 않습니다.

그리고 그것은 HashMap#Put()

과 지정된 키를이 맵에 관련 지정된 값의 문서에 mentiond된다. 지도에 이전에 키에 대한 매핑이 포함 된 경우 이전 값이 대체됩니다. "val1" 교체 때문 케이스 keykey-1 현재 value에서

map.put("key-1","val1"); 
map.put("key-1","val2"); 

"val2"이다.

1

Map#put

동료에게이지도 (옵션)에 지정된 값과 지정된 키를 Accroding. 지도에 이전에 키에 대한 매핑이 포함 된 경우 이전 값이 지정된 값으로 대체됩니다.


key와 연관된 이전 값. key에 대한 매핑이없는 경우 null입니다. null의 반환은, 구현이 null 치를 서포트하고있는 경우, 맵이 이전에 null를 키와 관련 짓고 있었음을 나타낼 수도 있습니다.

1

Map.put 중복 키에는 예외가 throw되지 않습니다. null이 아니고 키가 중복되면 put의 반환 값을 테스트 할 수 있습니다. 만약 그것이 null이라면 구체적인지도 구현이 널을 허용하는지 여부에 달려있다. HashMap 않습니다.

관련 문제