2013-02-16 2 views
0

나는 HashMap> <> "11, name2, name1"및 "14, name4, name5"을 가지고 있습니다. 이렇게하면 11을 먼저 제거하려고합니다. 데이터 이름 2와 이름 1은 14로 전송되지만 문제는 14의 원래 데이터 이름 4이며 이름 5는 덮어 씁니다. 나는 그들을 14 살로 유지하고 싶습니다. 어떻게해야합니까? 희망을 가지고 나를 도울 수 있기를 바랍니다. 고맙습니다.HashMap 중복 키 대체

List<String> oldValue = map.remove(oldKey); 
map.put(newKey, oldValue); 

답변

2

다음과 같이 시도 할 수 있습니다. 이전 키에서 이전 목록을 추출하십시오. 목록 항목을 새 키 목록에 추가하십시오.

// remove old key 
    List<String> oldValue = map.remove(oldKey); 
    // add new key with empty list if not exists 
    if(!map.containsKey(newKey)) 
    { 
     map.put(newKey, new LinkedList<String>()); 
    } 
    // new list for new value 
    List<String> newValue = map.get(newKey); 
    // add items from old value to new list 
    for(String s : oldValue){ 
     // eliminate possible duplicates 
     if(!newValue.contains(s)){ 
      newValue.add(s); 
     } 
    } 
+0

와우 ... 감사합니다. 많은 도움이됩니다. – user2064467