ハッシュマップを作成したい
private Map<Integer,specificObject> myMap;
myMap = new HashMap <Integer,SpecificObject>(initialCapacity);
プログラム全体で myMap の容量を同じままにすることは可能ですか? たとえ定員に達したとしても。
そのようなクラスを自分で実装できます。(明らかなアプローチは、HashMap
を呼び出すたびにマップのサイズなどをチェックするためのラッパー クラスを作成することですput
。)
しかし、通常のHashMap
クラスはそのようには機能しません。さらに、initialCapacity
パラメータは次のとおりです。
1 - その数は、初期容量と負荷率を含む式によって決定されます。
Java 標準ライブラリにはサイズ制限キャッシュ実装がありませんが、Google の Guava にはそのようなクラスがあります。https://code.google.com/p/guava-libraries/wiki/CachesExplained#Size-based_Evictionをご覧ください。キャッシュには、キャッシュの作成時に定義できるサイズ制限、エントリのタイムアウトなどの追加機能を備えたマップと同じインターフェイスがあります。
まず、これinitialCapacity
は実際の容量ではありません。
を渡す12
と、容量は16
になります。つまり、a を渡すと、システムは を使用b >= a
し、ほとんどが に達し2^N
ます。
次に、ハッシュマップにはfactor = most num / all capacity
. 例えば、factor = 0.5 で容量が 16 の場合、8 個のオブジェクトを配置すると、サイズが自動的に拡張されます。