2016-06-13 9 views
0

ハッシュマップを使用して、javaで電話帳をシミュレートするアプリケーションを作成する必要があります。私は検索のための2つのメソッドを実装したい(名前を取得して名前を取得するために名前を入力する)。javaでハッシュマップを実装した電話帳

両方のメソッドをこのHashMap<Person, Number> pb = new HashMap<>();(PersonとNumberがクラスの場合)のように定義された1つのハッシュマップのみで動作させる方法はありますか?

ない
+0

これはかなり可能であるはずです。 –

+1

可能ですが、数値を見つけるためにはすべての値を繰り返し処理する必要があります。ただの観察:数字はユニークであることが保証されています。名前はありません。その数字が鍵になるのは理にかなっています。 –

答えて

2

んが、あなたは、もちろん非常に遅いの値を反復処理する必要があるだろう1つのマップのみを使用して、データへの高速アクセスを持たせたい場合は、この場合Map<Person, Number>Map<Number, Person>で2 Mapsを必要としています。あなたはまた、1つのマップ

2領域マップ(または「双方向マップ」)との両方を行うには、GoogleのグアバからBiMapを使用することができます

は その値の一意性などのことを保持するマップであり、そのキー。この制約 は、利用可能なこれはBidiMap(双方向マップ)を介して行うことができ、この2領域マップとしてではなく、逆キーと 値

0

と同じエントリを含む他の2領域マップ ある「逆ビュー」をサポートするためにbimapsを可能apacheのコモンズコレクションで。詳細はhttps://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/BidiMap.htmlを参照してください。しかし、この場合、名前と番号は一意でなければなりません。可能でない場合は、2つのマップを維持するか、1つのマップを使用して値を反復する必要があります。

関連する問題