2

整数をキー、オブジェクトを値とするハッシュ マップを使用するプログラムの開発。SparseArray がより効率的であることを通知する Lint 警告を取得し続けます。このリンクで与えられたのと同じことを読むと、インデックスにギャップがある可能性があります。それは実際にはどういう意味ですか、私は得ることができません。

1,5,10 のようなキーがある場合、配列サイズはインデックス 1、5、10 の 3 になります。(または) 配列サイズは 11 になり、オブジェクトは 1、5、10 のインデックスに存在し、残りは空になります。 ?

私を明確にしてください。

4

3 に答える 3

4

の効率の向上はSparseArray、(他の回答が指摘したように) 構造が異なるためだけでなく、キーとして使用するときにオートボクシングintを回避しているという事実によるものでもあります。

つまり、 eg を使用map.get(1)すると、実際には と同等のことを実行していますmap.get(Integer.valueOf(1))。つまり、intプリミティブをIntegerクラス インスタンスに変換しています。

ではSparseArray、この種の型変換はありません。 を使用しているだけですint。詳細については、オートボクシングのリンクを確認してください。

于 2013-01-04T08:12:21.240 に答える
2

SparseArrayのソースコードを見ると、より理にかなっています。これには 2 つの配列しかありません。1 つはキーを含み、もう 1 つは値を含みます。したがって、最初の推論は正しいです。

于 2013-01-04T08:08:16.910 に答える
0

例からキー 1、5、および 10 を使用すると、実質的に SparseArray長さが 3 になります。

于 2013-01-04T08:06:37.780 に答える