泛型與容器

2021-09-08 19:19:29 字數 1292 閱讀 8739

public

void

remove

(arraylist

list)}}

/**迭代器內部會維護一些索引位置相關的資料,迭代過程中容器不能發生結構性變化(新增、插入、刪除),否則索引位置就失效。

*/

1、可隨機訪問,按照索引訪問效率高

2、除非陣列已排序,否則按照內容查詢元素效率低,效能與陣列長度成正比

3、新增n個元素效率為o(n),n為陣列長度

4、插入和刪除元素效率低,因為需要移動元素,具體為o(n)

1、按需分配空間

2、不可以隨機訪問,按照索引訪問效率低

3、不管是否排序,按照內容查詢元素效率都低

4、兩端新增、刪除元素效率高

5、中間插入、刪除元素要先定位,效率較低,但修改本身效率很高

1、兩端新增、刪除效率很高

2、根據元素內容查詢和刪除的效率較低

3、沒有索引位置的概念,不能根據索引進行操作

1、根據鍵訪問值效率很高

2、鍵值對沒有順序,因為hash值是隨機的

3、執行緒不安全

排序二叉樹

treemap

treeset

linkedhashmap

1、快取就是用來儲存常用的資料,容量小訪問快

2、lru是快取裡一種流行的替換演算法,即當快取滿了,最近最少使用的先被清理出去

enumset:用位向量實現

priorityqueue優先順序佇列

佇列長度沒有限制,每個元素都有優先順序,隊頭的元素優先順序最高

內部用堆實現,內部元素不是完全有序的,不過逐個出隊會得到有序的輸出

檢視頭部元素效率很高,o(1),入隊出隊效率較高,o(log2(n))

根據值查詢和刪除元素效率比較低,o(n)

求中值:元素是動態新增(用乙個最大堆乙個最小堆)

步驟:

1、設當前中位數為m,最大堆維護<=m的元素,最小堆維護》=m的元素,但兩個堆都不包含m

2、當新元素e到達與m進行比較,若e<=m將其加入最大堆,反之加入最小堆

3、第2步之後如果最大堆和最小堆元素個數差》=2,則將m加入元素個數少的堆中,然後從元素個數多的堆將根節點移除並賦值給m

集合和泛型11 泛型委託與泛型事件

委託也可以泛型化,也就是委託也定義自己的型別引數,這樣的委託稱為泛型委託。在使用委託的 中可以給委託指定型別引數的具體型別,而讓泛型委託例項化為具體的委託例項。就像例項化泛型類或呼叫泛型方法一樣。定義乙個泛型委託的語法格式 public private protected delegate 返回型別...

泛型List與非泛型ArrayList

arraylist集合的用處越來越窄了,list static void main string args arraylist的不安全性一目了然,型別不安全,必將導致各種攻擊的產生,static void main string args 相比不安全的arraylist來說,list 的型別安全性使...

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...