解决方案 »

  1.   

    这一点你完全没必要考虑,Hashmap的源码设计本身就是根据数据量的大小自动扩容的。参考一下源码:public V put(K key, V value) {  
           if (key == null) 
               return putForNullKey(value);  
           int hash = hash(key.hashCode()); 
           int i = indexFor(hash, table.length); 
           for (Entry<K,V> e = table[i]; e != null; e = e.next) {
               Object k;  
               if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {  
                   V oldValue = e.value;  
                   e.value = value;  
                   e.recordAccess(this);  
                   return oldValue;  
               }  
           }  
      
           modCount++;
           addEntry(hash, key, value, i);
           return null;  
       }  
    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);  
        }  
    void transfer(Entry[] newTable) {  
           Entry[] src = table;  
           int newCapacity = newTable.length;  
           for (int j = 0; j < src.length; j++) {  
               Entry<K,V> e = src[j];  
               if (e != null) {  
                   src[j] = null;  
                   do {  
                       Entry<K,V> next = e.next;  
                       int i = indexFor(e.hash, newCapacity);  
                       e.next = newTable[i];  
                       newTable[i] = e;  
                       e = next;  
                   } while (e != null);  
               }  
           }  
       }  
      

  2.   

    我现在明确地知道数据就一个,{result: success/failed}, 这种就不需要用Map了,map默认就会构建16个!我不需要那么多!
      

  3.   


    那你为什么还要定义Map呢。。你这么注重效率就不该用Map。。直接解析字符串多好。。何必new一个Map对象。。
      

  4.   

    既然知道长度了,那就不用考虑map了,