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, так как ключи и значения в вашем примере имеют различные типы.

В Java 8 это можно сделать довольно легко, создавая Stream из записей исходного Map и с помощью toMapCollector генерировать новый Map:

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

Это было очень просто и элегантно, но я использую более раннюю версию. –

+1

@HiteshkumarMisro Ну, в более ранних версиях Java вам нужно будет создать новую «карту», ​​выполнить итерацию по entrySet() исходной карты с помощью цикла и вызвать «newMap.put (entry.getValue(), entry. getKey()) 'для каждой записи. – Eran

Смежные вопросы