带有java哈希图实现的电话簿



我必须制作一个应用程序,使用哈希映射来模拟Java中的电话簿。我想实现 2 种搜索方法(输入名称以获取数字,输入数字以获取名称)。

有没有办法让这两种方法都只使用 1 个像这样定义的哈希映射HashMap<Person, Number> pb = new HashMap<>();(其中 Person 和 Number 是类)?

不,在这种情况下,您需要 2 Maps Map<Person, Number>Map<Number, Person>如果您想仅使用一张地图快速访问数据,则需要迭代值,这当然要慢得多。

您也可以使用谷歌番石榴的BiMap来用一张地图完成这两件事。

双向

地图(或"双向地图")是保留 其值及其键的唯一性。此约束 使 Bimap 能够支持"反向视图",这是另一个 BIMAP 包含与此 bimap 相同的条目,但具有反转键和 值

这可以通过 apache commons 集合提供的双向地图(双向地图)来完成。有关更多详细信息,请参阅 https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/BidiMap.html。但是,在这种情况下,名称和编号必须是唯一的。如果不可能,则必须维护两个映射或使用一个映射并迭代值。

最新更新