0

你能告诉我如何交换 Hashmap 的键值。即说我有一个包含以下键和值的哈希图:

(1,11),(2,10),(3,10),(4,20)  

现在我想将密钥交换为值,将值交换为密钥。输出应该是:

(11,1),(10,2),(20,4)
4

3 回答 3

2

如果您不关心开销的空间,您可以执行以下操作:

Hash newHash

foreach (key, value) in oldHash:
    if !newHash.hasKey(value):
        newHash.add(value, key)

oldHash = newHash

注意:这假设您的示例中的行为是在输入中多次出现值时使用“第一个”键作为值。这对我来说似乎不是特别理智,但你去吧。

于 2012-08-14T12:27:06.927 回答
0

你可以按照这个想法来做到这一点:

1. Create a Stack S.

2. Push all the values of your hash to the stack

3. Clear your hash (the hash should be empty)

4. While the stack is not empty

5. E <- S.Pop()

6. Hash(E.Value) <- E.Key

7. End While
于 2012-08-14T12:17:15.067 回答
0
HashMap<String, String> hm=new  HashMap<String, String>();
hm.put("1","abc");
hm.put("2", "bbc");
hm.put("3", "kbc");
System.out.println(hm);





Hashtable<String, String> h=new Hashtable<String, String>();
Set<String> keySet=hm.keySet();
Iterator<String>itr=keySet.iterator();





while(itr.hasNext())
{
    String key=(String)itr.next();
    String value=(String)hm.get(key);
    if(key!=null&&value!=null)
    {
        h.put(value,key);
    }
}





System.out.println(h);

}

于 2018-10-11T17:07:22.047 回答