2013-03-11 2 views
0

У меня есть хэш-карта и значения в ней. Теперь я хочу установить значения на карте как клавиши и ключи как значения. Может ли кто-нибудь предложить какую-либо идею?Ключи и значения HashMap

Моя Карта

Map<String, String> col=new HashMap<String, String>(); 
col.put("one","four"); 
col.put("two","five"); 
col.put("three","Six"); 

Теперь я хочу, чтобы создать еще одну карту и поставить его по-другому, как я сказал выше. т.е.

Map<String, String> col2=new HashMap<String, String>(); 
col.put("five","one"); 
col.put("four","two"); 
col.put("Six","three"); 

У кого-нибудь есть идея? Спасибо

ответ

1

Предполагая, что ваши значения уникальны в вашей хэш-карте, вы можете сделать это.

// Get the value collection from the old HashMap 
Collection<String> valueCollection = col.values(); 
Iterator<String> valueIterator = valueCollection.iterator(); 
HashMap<String, String> col1 = new HashMap<String, String>(); 
while(valueIterator.hasNext()){ 
    String currentValue = valueIterator.next(); 
    // Find the value in old HashMap 
    Iterator<String> keyIterator = col.keySet().iterator(); 
    while(keyIterator.hasNext()){ 
      String currentKey = keyIterator.next(); 
      if (col.get(currentKey).equals(currentValue)){ 
       // When found, put the value and key combination in new HashMap 
       col1.put(currentValue, currentKey); 
       break; 
      } 
    } 
} 
+0

Спасибо. Я получил его –

+0

-1: Ненужная сложность n². – Boann

+0

@Boann Я согласен. Метод 'entrySet' не ударил меня. –

0

Создайте еще один Map и перебирать ключи/значения по одному и поставить в новый Map. наконец, удалить старый.

2

Как так:

Map<String, String> col2 = new HashMap<String, String>(); 
for (Map.Entry<String, String> e : col.entrySet()) { 
    col2.put(e.getValue(), e.getKey()); 
} 
Смежные вопросы