DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          java中的容器-hashMap

          java的大部分容器都有一個須要了解的問題,就是什么時候須要擴張
          看看hashMap的實現 ,兩個關鍵的值
          1,hashMap的默認容量
          static final int DEFAULT_INITIAL_CAPACITY = 16;
          默認的load factor
          static final float DEFAULT_LOAD_FACTOR = 0.75f;
          擴張相關的函數
          ? 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);
          ?}
          ?結論,在建立HashMap的時候可以考慮一下是否傳入Load Factor和capacity的值來優化性能,
          ?漸少擴張次數(load factor和initial capacity), 或者漸少空間浪費(loadFacotr)

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

          主站蜘蛛池模板: 甘谷县| 延安市| 普兰店市| 合水县| 右玉县| 武隆县| 东海县| 嫩江县| 呈贡县| 房产| 屯留县| 洛扎县| 宜宾市| 华宁县| 英吉沙县| 平罗县| 周至县| 花垣县| 博爱县| 宁武县| 祁连县| 梁山县| 海城市| 巴中市| 襄汾县| 都江堰市| 新巴尔虎左旗| 双牌县| 剑河县| 红桥区| 镇平县| 崇州市| 沙雅县| 阜新市| 西华县| 樟树市| 花垣县| 河南省| 同仁县| 和林格尔县| 潜江市|