① java map 的長度
Map是一個借口,只有實現他的類才有制定長度的功能,比如HashMap,初始化是16,List也是介面,它的實現類之一arraylist的構造函數有初始化長度的功能
② 如何獲取 java hashmap佔用內存空間大小
java沒有sizeofo,,
我參考 http://topic.csdn.net/t/20060224/20/4575988.html寫了一個
public static void main(String[] args){
// 創建1000個HashMap
HashMap strA[] = new HashMap[1000];
long start = 0;
long end = 0;
// 先垃圾回收
System.gc();
start = Runtime.getRuntime().freeMemory();
for(int i = 0; i < 1000; ++i)
strA[i] = new HashMap();
// 快要計算的時,再清理一次
System.gc();
end = Runtime.getRuntime().freeMemory();
System.out.println("一個HashMap對象占內存:" + (start - end)/1000.0);
}
③ Java中HashMap和TreeMap的區別深入理解
HashMap:數組方式存儲key/value,線程非安全,允許null作為key和value,key不可以重復,value允許重復,不專保證元素迭代順序是屬按照插入時的順序,key的hash值是先計算key的hashcode值,然後再進行計算,每次容量擴容會重新計算所以key的hash值,會消耗資源,要求key必須重寫equals和hashcode方法
默認初始容量16,載入因子0.75,擴容為舊容量乘2,查找元素快,如果key一樣則比較value,如果value不一樣,則按照鏈表結構存儲value,就是一個key後面有多個value;
TreeMap:基於紅黑二叉樹的NavigableMap的實現,線程非安全,不允許null,key不可以重復,value允許重復,存入TreeMap的元素應當實現Comparable介面或者實現Comparator介面,會按照排序後的順序迭代元素,兩個相比較的key不得拋出classCastException。主要用於存入元素的時候對元素進行自動排序,迭代輸出的時候就按排序順序輸出