list 集合:
list: 有順序的,元素可以重複遍歷:for 迭代
排序:comparable comparator collections.sort()
arraylist:底層用陣列實現的list
特點:查詢效率高,增刪效率低 輕量級 執行緒不安全
遍歷: arraylistal=new arraylist();
al.add("winsun"); al.add("weixin"); al.add("mybole");
for(int i=0;i
hashtable類
hashtable繼承map介面,實現乙個key-value對映的雜湊表。任何非空(non-null)的物件都可作為key或者value。
新增資料使用put(key, value),取出資料使用get(key),這兩個基本操作的時間開銷為常數。
hashtable通過initial capacity和load factor兩個引數調整效能。通常預設的load factor 0.75較好地實現了時間和空間的均衡。增大load factor可以節省空間但相應的查詢時間將增大,這會影響像get和put這樣的操作。
使用hashtable的簡單示例如下,將1,2,3放到hashtable中,他們的key分別是」one」,」two」,」three」:
hashtable numbers = new hashtable();
numbers.put(「one」, new integer(1));
numbers.put(「two」, new integer(2));
numbers.put(「three」, new integer(3));
要取出乙個數,比如2,用相應的key:
integer n = (integer)numbers.get(「two」);
system.out.println(「two = 」 + n);
由於作為key的物件將通過計算其雜湊函式來確定與之對應的value的位置,因此任何作為key的物件都必須實現hashcode和equals方法。hashcode和equals方法繼承自根類object,如果你用自定義的類當作key的話,要相當小心,按照雜湊函式的定義,如果兩個物件相同,即obj1.equals(obj2)=true,則它們的hashcode必須相同,但如果兩個物件不同,則它們的hashcode不一定不同,如果兩個不同物件的hashcode相同,這種現象稱為衝突,衝突會導致操作雜湊表的時間開銷增大,所以盡量定義好的hashcode()方法,能加快雜湊表的操作。
如果相同的物件有不同的hashcode,對雜湊表的操作會出現意想不到的結果(期待的get方法返回null),要避免這種問題,只需要牢記一條:要同時複寫equals方法和hashcode方法,而不要只寫其中乙個。
hashtable是同步的。
hashmap類
hashmap和hashtable類似,不同之處在於hashmap是非同步的,並且允許null,即null value和null key。,但是將hashmap視為collection時(values()方法可返回collection),其迭代子操作時間開銷和hashmap的容量成比例。因此,如果迭代操作的效能相當重要的話,不要將hashmap的初始化容量設得過高,或者load factor過低。
weakhashmap類
weakhashmap是一種改進的hashmap,它對key實行「弱引用」,如果乙個key不再被外部所引用,那麼該key可以被gc**。
hashset請參考對set的描述
set是一種不包含重複的元素的collection,即任意的兩個元素e1和e2都有e1.equals(e2)=false,set最多有乙個null元素。
set的建構函式有乙個約束條件,傳入的collection引數不能包含重複的元素。 請注意:必須小心操作可變物件(mutable object)。如果乙個set中的可變元素改變了自身狀態導致object.equals(object)=true將導致一些問題。
兩個通用set實現是hashset 和treeset。要決定用哪乙個,那是非常簡單明瞭的。 hashset 要快得多 (對大多數操作是常數時間之於對數時間(constant time vs. log time)), 但不提供排序保證。如果你需要使用 sortedset 中的操作,或者按順序迭代對你來說是重要的,那麼請使用 treeset。 否則,使用 hashset。 在大多數時間都不使用 hashset ,對你來說是個公平的賭博。
關於 hashset,有一件事應該牢記,即就條目數和容量之和來講,迭代是線性的。因此,如果迭代效能很重要,那就應該慎重選擇乙個適當的初始容量。容量選得太大,既浪費空間,也浪費時間。 預設的初試容量是101, 一般來講,它比你所需要的要多。可以使用 int 建構函式來指定初始容量。要分配 hashset 的初始容量為17:
set s= new hashset(17);
hashsets 另有乙個稱作 裝載因數(load factor) 的"調整引數(tuning parameter)" 。如果你非常在乎你的 hashset 的空間的使用,請閱讀 hashset 文字以獲取詳細資訊。否則,就使用預設值吧。如果你接受預設裝載因數,但你確實又想指定初始容量,那麼,選乙個大約是你期望你的 set 將增長到的容量的兩倍的數。如果你的猜測不著邊,它也可以增長,或只是浪費一點空間。但都沒有大問題。如果你知道有關正確尺寸的乙個最佳值,用它吧;如果不知道,那就使用乙個舊的值,或使用乙個偶數值。它真的不是非常重要。這些事情只能使 hashset 稍稍變好一點點。
treeset 沒有調整引數。除 clone 之外,hashset 和 treeset 都僅有那些由它們各自的介面所要求的操作 (set 和 treeset),而沒有任何別的操作。
C 六種集合效能比較
一.先來說說陣列的不足 也可以說集合與陣列的區別 1.陣列是固定大小的,不能伸縮。雖然system.array.resize這個泛型方法可以重置陣列大小,但是該方法是重新建立新設定大小的陣列,用的是舊陣列的元素初始化。隨後以前的陣列就廢棄!而集合卻是可變長的 2.陣列要宣告元素的型別,集合類的元素型...
redis memcache 效能比較
from redis和memcache非常像的,都是key,value的方式,將資料存放記憶體中。最近在學習redis,在網上看了一些這方面的資料,有三種觀點 1,redis讀寫記憶體比memcache快 2,memcache讀寫記憶體比redis快 3,memcache讀寫記憶體比redis快,但...
apache resin ngnix 效能比較
靜態頁面測試,靜態頁面包括css,js,img ab c 20 n 30 併發測試 高數值的也測過,結論一致 resin2.17 平均響應時間為0.521ms nginx 0.7.65 平均響應時間為1.042ms 少許幾次小於1.042 apache2.0 平均響應時間為最低1.042ms 在re...