-1

ハッシュマップを作成したい

private Map<Integer,specificObject> myMap;
myMap = new HashMap <Integer,SpecificObject>(initialCapacity);

プログラム全体で myMap の容量を同じままにすることは可能ですか? たとえ定員に達したとしても。

4

4 に答える 4

0

そのようなクラスを自分で実装できます。(明らかなアプローチは、HashMapを呼び出すたびにマップのサイズなどをチェックするためのラッパー クラスを作成することですput。)

しかし、通常のHashMapクラスはそのようには機能しません。さらに、initialCapacityパラメータは次のとおりです。

  • マップのサイズではなく、
  • マップを展開する必要がある前に格納できる実際のエントリ数ではありません。
  • アクセス可能な変数またはゲッターを介して公開されていません。

1 - その数は、初期容量と負荷率を含む式によって決定されます。

于 2014-09-07T05:54:43.293 に答える
0

Java 標準ライブラリにはサイズ制限キャッシュ実装がありませんが、Google の Guava にはそのようなクラスがあります。https://code.google.com/p/guava-libraries/wiki/CachesExplained#Size-based_Evictionをご覧ください。キャッシュには、キャッシュの作成時に定義できるサイズ制限、エントリのタイムアウトなどの追加機能を備えたマップと同じインターフェイスがあります。

于 2014-09-07T07:42:33.500 に答える
0

まず、これinitialCapacityは実際の容量ではありません。

を渡す12と、容量は16になります。つまり、a を渡すと、システムは を使用b >= aし、ほとんどが に達し2^Nます。

次に、ハッシュマップにはfactor = most num / all capacity. 例えば、factor = 0.5 で容量が 16 の場合、8 個のオブジェクトを配置すると、サイズが自動的に拡張されます。

于 2014-09-07T05:55:21.840 に答える