ArrayListを使用して対のキーとして整数(指数)とHashMapを使用して

PreciseMotion:

だから私は現在、ポケモンの自分自身のバージョンを作ってるんだ、Javaで複製されました。私はごく最近になって、より高度なデータ構造を熟知得ていると、一方が他方よりも適切でなければならないとき、私はまだわかりません。

基本的に、私はそれが最高のフィット感を作るのと同じようポケモンずかん(ポケモンのデータベース)とHashMapのはそう保存したいです。キーは、ポケモンのポケモンずかん#となり、その値は、問題のポケモン対象になります。各ポケモンのポケモンずかん#はちょうどポケモンずかんで、それぞれの指標になることしかしポケモンずかんの性質に起因します。

私の質問は、それはキーがちょうどインデックス値である場合にはHashMapを使用しても意味がないか、またはそれは各ポケモンは、それぞれのインデックスに格納されているのArrayList(あるいは配列)としてポケモンずかんを保存するために、より理にかなって?

私はすべてのポケモンの定義を作成していない、まだ、我々はすべてのポケモンのための予備スペースになりますので、その後、ArrayListには、メモリ非効率的になりますが、私の知る限り理解してハッシュマップ内のキーは、むしろハッシュ値を作成するために使用されることになっている明らか場合直接の指標が右であることよりも?それともそれは関係なく、適切なのでしょうか?

GhostCat敬礼モニカC.:

これは本当に依存します。リスト/配列は、線形/シーケンシャルなデータ構造を使用しての結果にあなたを強制する可能性があるのに対し、マップは、あなたの自由度を与えます。

その後、それはあなたの配列が取り込まれますか「スパース」に依存します。「キー」は、いくつかまたは全く未使用のスロットで、1000年に0を実行すると、リストは結構です。キーを10万台に0を移動し、ほとんどのスロットが空の場合は:マップを使用しています。またはデータ構造は、スパース行列用に最適化されています。

それ以上に、ちょうどそれらを指す参照のため、オブジェクト自体の配列がメモリを含んでいないことに注意してください。スロットがNULLであるか、どこを指しているのであれば、配列のメモリフットプリントは、どんなに同じです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=206986&siteId=1