0

我有一个哈希映射和其中的值。现在我想将地图中的值设置为键和键作为值。任何人都可以提出任何想法吗?

我的地图是

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

现在我想创建另一个地图并按照我上面所说的其他方式放置它。IE,

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

有人有想法吗?谢谢

4

3 回答 3

2

像这样:

Map<String, String> col2 = new HashMap<String, String>();
for (Map.Entry<String, String> e : col.entrySet()) {
    col2.put(e.getValue(), e.getKey());
}
于 2013-03-11T11:38:05.667 回答
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;
          }
     }
}
于 2013-03-11T10:48:34.713 回答
0

创建另一个Map并逐个遍历键/值并放入 new Map。最后删除旧的。

于 2013-03-11T10:53:37.277 回答