2017-06-21 2 views
0

私はカスタムオブジェクトのArrayListを持っています。私は、特定の条件に基づいてAから2つの変数を取得する必要があります。毎回for loopを使用してリストからデータを検索するか、または2 LinkedHashMapを作成し、後でもっと高速にアクセスできるように、必要な変数をキー/値のペアとして保存する必要がありますか?どちらがより効率的ですか? 2つの追加の地図オブジェクトを作成すると検索中の効率が正当化されますか?ArrayListまたはMultiple LinkedHashMap

リストには約100〜150個のオブジェクトが含まれ、2つのマップも含まれます。 これは同時ユーザーが毎日使用します。

+3

これは、実行頻度やマップの可能性によって異なります。それがうまくいき、十分に速い場合は、変更する必要があることがわかるまで、残しておくことをお勧めします。 –

+0

「XまたはYを行う方が効率的ですか?」という質問に直面するときは、単にベンチマークテストを行うと便利です。いくつかの嘲笑されたデータを作成し、数百万までの数値を入力し、各テストにかかる時間を印刷します。 (あなたはすでに2つのデータ構造の基本的な構造を理解していると仮定します) –

+1

"違いは違いはありません。" - 匿名。 「時期尚早最適化はすべての悪の根源です。」 - Donald Knuth "まずそれを正しいものにして、それを速くするだけです(必要ならば)。" - 神様。 –

答えて

-2

LinkedHashMapを使用するのは、要件に応じてキー値のペアを作成したためです。本番環境でデータが増加するためです。

+1

そして、これは役に立ちます@Abishek Kumar Jain?どのくらいの "まともな男"のデータは、生産環境で増加し、あなたはどのように知っていますか?なぜ 'LinkedHashMap'で' HashMap'でないのですか? OPのコードにはどれくらいの違いがありますか?あなたの状況を実現するにはどれくらいの費用がかかりますか?あなたはこれを知っていませんが、まるで絶対的、普遍的、常に正しい解決策であるかのように答えます。パスしない。 –

+0

@LewBloch彼はキー値のペアを必要とし、彼はLinkedHashMapとlist.Itから選択するように頼んだので、私はリンクされたハッシュマップを提案する理由です。 –

0

「効率」について質問することは、「美」について質問するようなものです。 「効率」とは何ですか?私は、バグやその他の不正行為がなければコードをすぐに取り出すことが効率であると主張します。ソフトウェアコストの面で最も効率的なのは、初期の開発とメンテナンスの両方でプログラマ時間を節約するものです。あなたがSOに答えを見つけるのにかかった時に、あなたは正しい実装をコード化して修正していたかもしれませんし、制御された条件の下で厳密にあなたの選択肢をテストする時間があったでしょうか?のどれもがプログラムの動作において

プログラムの実行時間を20時間節約して、恐ろしく複雑な、エンジニアリングされていないバグがあり、リファクタリングや修正が難しいコードを犠牲にした場合、それは「効率的」ですか?

さらに、言い表されているように、問題は無駄です。あなたはあなたの文脈から「効率的」という定義を与えませんでした。問題の構造がどのようにプロジェクトアーキテクチャに適合しているか、その使用の程度、問題の大きさ、または「効率性」の定義に関連するその他の情報は提供していません。あなたが持っていた場合であっても

は、私たちは、あなたが弁護士の部屋いっぱいを依頼された場合よりも、このような質問に答えるためにこれ以上の能力を持っていないだろう「私は、彼らが何をしたかのためにそう-と、そう訴えるべきでしょうか?」それはすべて依存している。アドバイスが必要な場合は、状況や開発環境とプロセス、実行環境、チーム、プロジェクトの目標、予算、およびその他の関連データの状況に非常に特化したアドバイスが必要です。

ランタイム「効率性」に興味がある場合は、次の操作を行います。 「効率的」とは「効率的」は「十分に効率的」であるという答えを含む「効率的」で正確に何を意味するのかを正確に定義し、そのような「効率」を測定する基準も含めます。そのような正確かつ不確かな定義ができたら、厳格なテストプロトコルを設定して、選択肢を比較し、実際に「効率」を測定します。

"効率"を定義するときは、定義するものが重要であることを確認してください。プロジェクトコストやインパクトが非常に低い地域では「効率的」であり、コストやインパクトの大きい分野は無視されます。

ここであなたの状況に意味のある回答は期待できません。

関連する問題