1. 程式人生 > >《集合詳解之list》

《集合詳解之list》

集合

集合:集合是儲存物件資料的集合容器

集合比陣列的優勢:

1. 集合可以儲存任意型別的物件資料,陣列只能儲存同一種資料型別的資料

2. 集合的長度是會發生變化的,陣列的長度是固定的

Collection單例集合的根介面

List如果是實現了list介面的集合類,具備的特點:有序,可重複

Set如果是實現了set介面的集合類,具備的特點:無序,不可重複

增加

Add() 新增成功返回true,新增失敗false

Addall(Collection c) 把一個集合中的元素新增到另外一個集合中去

刪除

Clear() 清空集合中的元素

Remove(object o) 指定集合中的元素刪除,刪除成功返回true刪除失敗

false

Removeall(Collection c) 刪除集合中交集元素

Retainall(Collection c) 保留交集元素,不是交集元素全部刪除

檢視

Size() 檢視集合中的元素個數

判斷

Isempty() 判斷集合是否為空

Contains(object o) 判斷集合中是否指定的元素

Containsall(Collection c) 一個集合包含另外一個集合中的所有的元素 是返回true不是返回false

迭代

toarray() 把集合中的元素全部儲存到一個object的陣列中返回

Iterator() 返回一個迭代器

Hasnext() 問是否有下一個元素。如果有元素可以遍歷,返回

true否則返回false

Next() 先取出當前指標所指向的元素,然後指標向下移動一個單位,獲取元素

remove() 刪除迭代器最後一次返回的元素

List

新增

Add() 把元素新增到集合的末尾處

Add(index,元素) 把元素新增到指定位置

Addall(index,集合) 把一個集合中的所有元素新增到,另一個集中指定索引值上

獲取

Get(index) 根據索引值獲取集合中的元素

Indexof(object o) 找指定元素第一次在集合中出現的索引值

Lastindexof(object o) 找指定元素最後一次在集合中出現的索引值

Sublist(indexindex) 指定開始和結束的索引值擷取集合中的元素

修改

Set(index,元素) 使用指定的元素替換指定索引值的元素

迭代

Listiterator() 返回一個迭代器

Add() 把當前元素插入到當前指標指向的位置上

Set() 替換迭代器最後一次返回的元素

Hasprevious() 判斷是否存在上一個元素

Previous() 當前指標先向上一個單位,然後再取出指標指向的元素,獲取上一個元素

List介面中特有的方法具備的特點:操作的方法都存在索引值。

只有list介面下面的集合實現類才具備索引值,其他介面下面的集合類都沒有索引值

迭代器在遍歷元素要注意的事項:

1. 在迭代器遍歷元素的過程中,不允許使用集合物件改變集合中的元素個數,如果需要增加或者刪除,只能使用迭代器的方法進行操作

2. 如果使用了集合物件改變了集合中元素的個數那麼就會出現concurrentmodificationexceion異常

迭代元素過程中:迭代器建立到使用結束的時間

Arraylist原理

Arraylist特有的方法

Arrayllist底層是維護了一個object陣列實現的,使用無參建構函式時,object陣列預設的容量是10,當長度不夠用時,自動增長0.5倍,查詢速度快,增刪慢

Ensurecapacity() 指定object陣列的長度

Trimtosize() 調整object陣列為當前元素的長度的列表

什麼時候使用arraylist如果目前的資料是查詢比較多,增刪比較少的時候,就使用arraylist

Linkedlist原理

Linkedlist特點:底層是使用了連結串列資料結構實現的,查詢速度慢,增刪快

Linkedlist特有的方法:

1.方法介紹

Addfirst 把元素新增到集合的首位置

Addlast() 把元素新增到集合的末尾處

Getfirst() 獲取集合中首位置的元素

Getlast() 獲取集合中末尾的元素

Removefirst() 刪除集合中首位置元素

Removelast() 刪除集合中末尾元素

2.資料結構

堆疊(主要是用於實現堆疊資料結構的儲存方式)

先進後出

Push() 將元素插入到集合的開頭處

Pop() 移除並返回集合中第一個元素

佇列(雙端佇列)

先進先出(linkedlist模擬佇列資料結構的儲存方式)

Offer() 將元素新增到列表的末尾

Poll() 獲取並移除列表第一個元素

3. 返回逆序的迭代器物件

Descendingiterator() 返回迭代器物件

Vector

Vector底層也是維護了一個object陣列,實現和arraylist是一樣的但是vector是執行緒安全的,操作效率低。

Arraylistvector的區別:arraylistvector底層都是object陣列實現的,arraylist是執行緒不同步的,操作效率高,vector是執行緒同步的,操作效率低。Arraylistjdk1.2出現的,vectorjdk1.0出現的。