ハッシュマップのKey-Valueを交換する方法を教えてください。つまり、次のキーと値を含むハッシュマップがあると言います。
(1,11),(2,10),(3,10),(4,20)
ここで、キーを値に、値をキーに交換したいと思います。出力は次のようになります。
(11,1),(10,2),(20,4)
ハッシュマップのKey-Valueを交換する方法を教えてください。つまり、次のキーと値を含むハッシュマップがあると言います。
(1,11),(2,10),(3,10),(4,20)
ここで、キーを値に、値をキーに交換したいと思います。出力は次のようになります。
(11,1),(10,2),(20,4)
オーバーヘッドのスペースを気にしない場合は、次のようにすることができます。
Hash newHash
foreach (key, value) in oldHash:
if !newHash.hasKey(value):
newHash.add(value, key)
oldHash = newHash
注:これは、入力で値が複数回発生する場合の値として「first」キーを使用する例の動作を前提としています。これは私には特に正気ではないようですが、そこに行きます。
あなたはこの考えに従うことによってそれをすることができます:
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
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);
}