2016-09-14 7 views
2

私たちのデータベースには、要求時に存在するかどうかをチェックする必要がある約400k文字列(ユーザー名)があります。 1秒でチェックするために必要な大量のリクエストがあるため(mysqlのデータは定期的に更新されるため)、おそらくmysqlクエリの代わりにjavaを使用する方がよいでしょう。だから、私の考えは、mysqlを過熱するのではなく、特定のユーザ名が存在する場合、mysqlからjavaにデータをロードして結果を得るほうが良いということです。Java 1D配列リストコレクション.containsまたはHash-Map.containsKeyの速度

そして、私が質問するのは、配列をArrayListListのコレクションマップHashMapまたは何か3番目のものと考えることができます。そのリストにあるかどうか?

+4

おそらく 'HashSet'は' contains'にO(1)時間を与えるので、おそらくあなたの最善の策でしょう。 – Zircon

+0

ArrayListまたは配列はソートされていなければ 'O(n)'です。バイナリ検索は 'O(log n)'になりますが、HashSetは 'O(1)'で簡単です。そのサイズのHashMapをルックアップすると、約1マイクロ秒になるはずです。 0.000001秒である。 –

答えて

0

それぞれがどのように実装されているかの詳細は、javaドキュメントにあります。私はArrayListは線形検索を行うと信じています。だから、HashMapが最も良いでしょう。

関連する問題