DANCE WITH JAVA

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

          常用鏈接

          統(tǒng)計

          積分與排名

          好友之家

          最新評論

          java中的容器-hashMap

          java的大部分容器都有一個須要了解的問題,就是什么時候須要擴(kuò)張
          看看hashMap的實(shí)現(xiàn) ,兩個關(guān)鍵的值
          1,hashMap的默認(rèn)容量
          static final int DEFAULT_INITIAL_CAPACITY = 16;
          默認(rèn)的load factor
          static final float DEFAULT_LOAD_FACTOR = 0.75f;
          擴(kuò)張相關(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)化性能,
          ?漸少擴(kuò)張次數(shù)(load factor和initial capacity), 或者漸少空間浪費(fèi)(loadFacotr)

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

          主站蜘蛛池模板: 三门县| 稷山县| 宜阳县| 五莲县| 屯留县| 那曲县| 静乐县| 湖州市| 始兴县| 杭州市| 吉安市| 襄樊市| 沙洋县| 石屏县| 内黄县| 榕江县| 灌阳县| 慈溪市| 吴旗县| 禹州市| 富民县| 鄂托克前旗| 额济纳旗| 松阳县| 怀集县| 新乐市| 高青县| 托里县| 云龙县| 昌平区| 五原县| 临安市| 丽水市| 呼和浩特市| 尤溪县| 苏州市| 凌源市| 乌海市| 平罗县| 密云县| 恩平市|