2016-07-26 2 views
1

시작 질문, 키를 값으로 바꾸려면 그 반대의 경우는 HashMap입니다. 여기에 내가 지금까지 시도한 것들이있다. 귀하의 예제에서 키와 값이 서로 다른 유형이 있기 때문에HashMap 값으로 키 바꾸기 및

import java.util.HashMap; 
import java.util.Map; 

class Swap{ 
    public static void main(String args[]){ 

     HashMap<Integer, String> s = new HashMap<Integer, String>(); 

     s.put(4, "Value1"); 
     s.put(5, "Value2"); 

     for(Map.Entry en:s.entrySet()){ 
      System.out.println(en.getKey() + " " + en.getValue()); 
     } 
    } 
} 

답변

1

, 내가 편지를 해시 맵의 키와 값을 다른 해시 맵으로 바꿔주는 간단한 데모.

import java.util.HashMap; 
import java.util.Map; 

class Swap { 
    public static void main(String args[]) { 

     HashMap<Integer, String> s = new HashMap<Integer, String>(); 

     s.put(4, "Value1"); 
     s.put(5, "Value2"); 

     for (Map.Entry en : s.entrySet()) { 
      System.out.println(en.getKey() + " " + en.getValue()); 
     } 

     /* 
     * swap goes here 
     */ 
     HashMap<String, Integer> newMap = new HashMap<String, Integer>(); 
     for(Map.Entry<Integer, String> entry: s.entrySet()){ 
      newMap.put(entry.getValue(), entry.getKey()); 
     } 

     for(Map.Entry<String, Integer> entry: newMap.entrySet()){ 
      System.out.println(entry.getKey() + " " + entry.getValue()); 
     } 
    } 
} 
+0

나를 위해 위대한 작품 –

6

당신은 새로운 Map가 필요합니다.

이 원래 Map의 항목의 Stream을 생성하고이 toMap CollectorMap 새로운 생성하는 데 사용하여 아주 쉽게 할 수있는 Java 8에서

:에 란 의해 제안

Map<String,Integer> newMap = 
    s.entrySet().stream() 
       .collect(Collectors.toMap(Map.Entry::getValue,Map.Entry::getKey)); 
+0

매우 간단하고 우아하지만 이전 버전을 사용하고 있습니다. –

+1

@HiteshkumarMisro 이전 버전의 Java에서는 새 Map을 만들고 루프를 사용하여 원래 Map의 entrySet()을 반복하고 newMap.put (entry.getValue(), entry)를 호출해야합니다. getKey())'를 호출합니다. – Eran