1. collection介面:申明了一些操作集合中的元素的方法。它沒有乙個直接的子類 。但程式設計一般不會直接針對collection。
但它提供了一些很常用的方法:
1) boolean add(e e);
2) boolean remove(object o);
3) int size();
4) iteratoriterator();
2. set介面:不能存放重複元素的介面 (重複:兩個物件equals相等)
在類中重寫equals()和hashcode()方法 八種基本資料型別的包裝類,string,date,calender都重寫了著兩個方法。
1)hashset : 內部使用雜湊表來儲存元素 所以訪問元素的效率最高 ,不保證元素的存放順序。
2)linkedhashset: 採用雜湊表和雙向鍊錶來儲存元素,所以他保證元素的存放順序。效率比hashset低。
3)treeset :
3. list介面:有序的列表,允許有重複的元素。
1)可以根據元素的索引來訪問元素。
void add(int index,e element),
e get(int index),
e remove(int index),
listiteratorlistiterator()
2) 兩個重要的實現類:
a) arraylist :內部採用了陣列結構來訪問元素,根據索引來訪問元素的效率很高。不適合頻繁增刪元素的情況。
b) linkedlist: 內問採用了雙向鍊錶來儲存元素,增刪效率比arraylist高。但他的根據索引查詢的效率很低。
4. map介面:實現的是鍵/值對的儲存
v put(k key, v value)
v get(object key)
v remove(object key)
int size()
檢視:1.collectionvalues()//返回的是collection介面,裡面存放的是鍵值對的值
2.setkeyset() //返回鍵值對中包含的鍵的集合用於迴圈遍歷其中的key值
3.set> entryset() //返回的是map中儲存的鍵值對物件(entry)的集合
實現類:
hashmap:應用hash表來儲存鍵值對中的鍵,根據鍵取查詢對應的值,因此儲存的鍵值對是無序的
訪問效率高。
linkedhashmap:內部用雙向鍊錶和雜湊表來儲存,鍵值對存放有序
5. 排序集合:
1)可排序的類必須實現comparable介面,在compareto方法中定義比較規則
如果當前物件小於指定比較的物件,則返回負整數;
如果當前物件大於指定比較的物件,則返回正整數;
如果當前物件等於指定比較的物件,則返回0;
2)如果需要多種方式進行比較時,就應該是用比較器,比較器類要實現comparator介面
int compare(t o1,t o2){}
3) 排序集合有treeset和treemap
支援兩種排序方式:
a.直接存入實現了comparable介面的物件
b.構造乙個比較器compartor
6. 遺留集合
1)vector
2) stack
3) hashtable
4) properties是乙個屬性集,
a) 它的鍵和值都是字串
b) 可以從檔案流中載入鍵值對,也可以儲存到檔案流中,
使用是不建議使用 put() 和 get(),應該是用setproperty()和getproperty()
7. 集合工具類 collections,所有的方法都是靜態方法。
常用演算法
1) public static > t max(collection<? extends t> coll)
2) public static > t min(collection<? extends t> coll)
3) public static > void sort(listlist)
4) public static void shuffle(list<?> list)
5) public static int binarysearch(list<? extends comparable<? super t>> list, t key)
同步處理
1) public static collectionsynchronizedcollection(collectionc)
2) public static collectionsynchronizedset(setc)
3) public static collectionsynchronizedlist(listc)
4) public static collectionsynchronizedmap(mapc)
注意一點,如果使用迭代器迭代,還需要手工處理同步問題
listlist = ...
synchronized(list)
}先到這裡吧
學習筆記 泛型
object型別引數有2個問題 1 裝箱拆箱,效能損耗 傳入乙個int值 棧 object又在堆裡面,如果把int傳遞進來,就會把值從棧裡面copy到堆裡 使用的時候,又需要用物件值,又會copy到棧 拆箱 2 型別安全問題,可能會有,因為傳遞的物件是沒有限制的 泛型方法與普通方法效能一致,還能乙個...
泛型學習筆記
泛型是 2.0 版 c 語言和公共語言執行庫 clr 中的乙個新功能。泛型將型別引數的概念引入 net framework,型別引數使得設計如下類和方法成為可能 這些類和方法將乙個或多個型別的指定推遲到客戶端 宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數 t,您可以編寫其他客戶端 能夠使...
C 學習筆記 泛型
泛型將型別引數的概念引入了.net,當我們需要設計類和方法,並將它們的型別制定推遲到客戶端 宣告,並例項化該型別和方法時,可以使用泛型。泛型使之前的想法成為了可能。使用泛型避免了執行時強制轉換或裝箱操作帶來的風險。簡單來說,首先制定乙個特定符號代替實際型別,當建立該型別的例項時,才指定它的實際型別。...