作者:拟称2502902853 | 来源:互联网 | 2023-01-16 10:51
我需要在两种对象之间有一个映射,比如说,出于演示目的,String和Long.
我知道HashMap具有O(1)搜索性能,这很棒.我使用的是这样的东西:
HashMap a = new HashMap();
当我想通过密钥搜索时,这很有用.但是,现在我还需要找到按值搜索的键.
如果我开始迭代密钥,那么我将失去性能.
我想到的第一个选择是以另一种方式创建另一个HashMap.
HashMap reverseA = new HashMap();
每当我写一个,写在另一个.
是不是有一个特定的类能够按键和值搜索,具有那么好的性能?
我应该用两个HashMaps创建自己的类吗?
还有其他方法吗?
1> Junior Dusso..:
您可以使用Guava BiMap:
BiMap map = HashBiMap.create();
map.put("a", 1L);
map.put("b", 2L);
map.put("c", 3L);
System.out.println(map.get("b")); // 2L
System.out.println(map.inverse().get(2L)); // "b"
另一个选择是Apache commons BidiMap:
BidiMap map = new DualHashBidiMap<>();
map.put("a", 1L);
map.put("b", 2L);
map.put("c", 3L);
System.out.println(map.get("b")); // 2L
System.out.println(map.inverseBidiMap().get(2L)); // "b"