将key-> value的hashmap"转置"为value-> key?

aeq*_*aeq 4 java hashmap

假设我有一个键 - >值对的映射,我想要反转这个,以便我有一个新的映射,它实际上是值 - >键(即旧值变为新键,旧键变为新值).

什么是最好的方法呢?(我正在使用Java ......).

哦,价值观是独一无二的.

Jon*_*eet 12

就个人而言,我会使用一个Guava BiMap开始(有一个实现HashBiMap),然后inverse()在我想使用值作为键时调用:)


Geo*_*rge 6

我认为这里有足够的解决方案来解决您的问题.我只想指出要小心,因为如果值不是唯一的,可能会导致数据丢失.Fe如果你有以下地图:

A->X
B->Y
C->Y
Run Code Online (Sandbox Code Playgroud)

反之亦然

X->A
Y->B
Run Code Online (Sandbox Code Playgroud)

要么

X->A
Y->C
Run Code Online (Sandbox Code Playgroud)

这取决于插入的顺序.通过再次反转,您将有一个<key,value>对更少.


Mar*_*ers 5

迭代entrySet:

for ( Map.Entry<K, V> entry : map.entrySet() ) {
    newMap.put(entry.getValue(), entry.getKey());
}
return newMap;
Run Code Online (Sandbox Code Playgroud)