DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計

          積分與排名

          好友之家

          最新評論

          java中的容器-hashMap

          java的大部分容器都有一個須要了解的問題,就是什么時候須要擴張
          看看hashMap的實現(xiàn) ,兩個關(guān)鍵的值
          1,hashMap的默認容量
          static final int DEFAULT_INITIAL_CAPACITY = 16;
          默認的load factor
          static final float DEFAULT_LOAD_FACTOR = 0.75f;
          擴張相關(guān)的函數(shù)
          ? void addEntry(int hash, K key, V value, int bucketIndex) {
          ?Entry<K,V> e = table[bucketIndex];
          ??????? table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
          ??????? if (size++ >= threshold)
          ??????????? resize(2 * table.length);
          ?? }
          ???
          ?void resize(int newCapacity) {
          ??? Entry[] oldTable = table;
          ??? int oldCapacity = oldTable.length;
          ??? if (oldCapacity == MAXIMUM_CAPACITY) {
          ??????? threshold = Integer.MAX_VALUE;
          ??????? return;
          ??? }

          ??? Entry[] newTable = new Entry[newCapacity];
          ??? transfer(newTable);
          ??? table = newTable;
          ??? threshold = (int)(newCapacity * loadFactor);
          ?}
          ?結(jié)論,在建立HashMap的時候可以考慮一下是否傳入Load Factor和capacity的值來優(yōu)化性能,
          ?漸少擴張次數(shù)(load factor和initial capacity), 或者漸少空間浪費(loadFacotr)

          posted on 2006-11-03 17:42 dreamstone 閱讀(468) 評論(0)  編輯  收藏 所屬分類: jdk相關(guān)

          主站蜘蛛池模板: 茌平县| 时尚| 通榆县| 五家渠市| 靖州| 三明市| 城步| 浙江省| 垫江县| 波密县| 庆安县| 龙泉市| 汝阳县| 绩溪县| 满洲里市| 嘉定区| 香河县| 广宗县| 彩票| 英山县| 武平县| 黄浦区| 赤峰市| 略阳县| 孝昌县| 佛学| 蕲春县| 迁安市| 永胜县| 余干县| 伊宁县| 金溪县| 贵州省| 丰镇市| 鹤峰县| 固始县| 丰顺县| 县级市| 社会| 襄垣县| 邯郸县|