我必须使用哈希映射创建一个可以在java中模拟电话簿的应用程序。我想实现2种搜索方法(输入名称来获取数字并输入数字来获取名称)。
有没有办法让两个方法只使用1个哈希映射来定义,如HashMap<Person, Number> pb = new HashMap<>();
(其中Person和Number是类)?
答案 0 :(得分:2)
在这种情况下,Maps
和Map<Person, Number>
不需要2 Map<Number, Person>
如果您希望只使用一个地图快速访问您的数据,则需要迭代这些值当然要慢得多。
您还可以使用Google番石榴的BiMap同时使用一张地图
bimap(或“双向地图”)是保留地图的地图 其价值的独特性以及其价值的独特性。这个约束 使bimaps支持“逆视图”,这是另一个bimap 包含与此bimap相同的条目,但使用反向键和 值
答案 1 :(得分:0)
这可以通过apache commons集合提供的BidiMap(双向映射)来完成。有关详细信息,请参阅https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/BidiMap.html。但是,在这种情况下,名称和数字必须是唯一的。如果不可能,那么您将需要维护两个地图或使用一个地图并迭代这些值。