泛型,自己學習筆記

2021-08-30 09:19:13 字數 2515 閱讀 9176

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,當我們需要設計類和方法,並將它們的型別制定推遲到客戶端 宣告,並例項化該型別和方法時,可以使用泛型。泛型使之前的想法成為了可能。使用泛型避免了執行時強制轉換或裝箱操作帶來的風險。簡單來說,首先制定乙個特定符號代替實際型別,當建立該型別的例項時,才指定它的實際型別。...