私はもともとArrayList
と書かれており、固有の値(ユーザー名、すなわちStrings
)がそこに格納されていました。私は後でユーザーがそれに存在するかどうかを検索するためにArrayList
を使用する必要がありました。それは検索のためのO(n)
です。HashMapのキーとしてデータを空/ヌル値で保存することをお勧めしますか?
技術担当者がHashMap
に変更し、ユーザー名をキーとしてアレイに保存し、値を空のStrings
にしてほしいと思っていました。 Javaでそう
、 -
hashmap.put("johndoe","");
このユーザーが実行することにより、後に存在するかどうか、私は見ることができます -
hashmap.containsKey("johndoe");
これはO(1)
右ですか?
私の鉛はこれを行うためのより効率的な方法だと私には意味があると言ったが、ハッシュマップに値としてnull/emptyを入れ、その要素をキーとして格納するのはちょっと見えなかった。
私の質問は、これは良いアプローチですか?効率はArrayList#contains
または一般的な配列検索に勝る。できます。 私の心配は、私は検索後に誰かがこれをやっているのを見たことがありません。私は明らかな問題をどこかで見逃しているかもしれませんが、私はそれを見ることはできません。
plus1 Javaのデータ構造を知らないときは有効な質問です。 – Daniel
'HashSet'は' HashMap.keySet() 'の実装です。マップをセットにしたい場合は、 'set = Collections.newSetFromMap(map)'を使うことができます。 –
この質問は間違っていません。このフォーラムは間違った場所です。 "スタックオーバーフローは、プロと熱心なプログラマーのための質疑応答サイトです"。 – rdllopes