我有一个Map实现,我必须创建一个查询,使用值名称字段我需要将Key返回给该对象。
一种方法是通过KeySet使用迭代器并检查每个Value,但效率不高。
时间是一个重要因素。
有没有有趣的解决方案/库这样做?
答案 0 :(得分:0)
您可以使用Guava框架中的BiMap: https://github.com/google/guava/wiki/NewCollectionTypesExplained#bimap
答案 1 :(得分:0)
是肯定的。 使用Bidi地图: - Bidi Map
实施例: -
BidiMap bidiMap = new DualHashBidiMap( );
bidiMap.put( "il", "Illinois" );
bidiMap.put( "az", "Arizona" );
bidiMap.put( "va", "Virginia" );
// Retrieve the key with a value via the inverse map
String vaAbbreviation = bidiMap.inverseBidiMap( ).get( "Virginia" );
// Retrieve the value from the key
String illinoisName = bidiMap.get( "il" );
使用相同的方法,您只需要实现Map的hascode()
和equals()
合约。
解决方案: -