List的遍歷方式

2021-07-11 02:58:49 字數 2719 閱讀 3630

for (int i = 0; i < list.size(); i++)
for (string temp : list)
iteratoriterator = list.iterator();

while (iterator.hasnext())

//預設的構造器,將會以預設(16)的大小來初始化內部的陣列 

public

arraylist();

//用乙個icollection物件來構造,並將該集合的元素新增到arraylist

public

arraylist(icollection);

//用指定的大小來初始化內部的陣列

public

arraylist(int);

arraylist支援執行緒同步,issynchronized屬性表示當前的list是否是執行緒安全的,如果不是執行緒安全的,那麼在多執行緒訪問的時候需要手動設定同步,如下:
arraylist list = new arraylist(); 

//...

lock( list.syncroot )

如果使用靜態方法arraylist.synchronized返回的例項,則本身就是執行緒安全的,不必再進行手動操作count儲存了當前arraylist的元素數量,是唯讀的

capacity是當前arraylist最多能包含的數量,當然使用過程中要注意實際數量不要超過capcity設定的值,否則報錯

add   用於新增乙個元素到當前列表的末尾 

addrange //用於新增一批元素到當前列表的末尾

remove //用於刪除乙個元素,通過元素本身的引用來刪除

removeat //用於刪除乙個元素,通過索引值來刪除

removerange //用於刪除一批元素,通過指定開始的索引和刪除的數量來刪除

insert //用於新增乙個元素到指定位置,列表後面的元素依次往後移動

insertrange //用於從指定位置開始新增一批元素,列表後面的元素依次往後移動

clear

//方法用於清除現有所有的元素

contains

//用來查詢某個物件在不在列表之中

trimsize //將arraylist固定到實際元素的大小,當動態陣列元素確定不在新增的時候,可以呼叫這個方法來釋放空餘的記憶體。

toarray//這個方法把arraylist的元素copy到乙個新的陣列中。

第一種
arraylistlist = new arraylist<>(); 

//...add操作

string values = list.toarray();

第二種
arraylistlist = new arraylist<>(); 

//...add操作

string values = new string [list.size()];

list.copyto(values);

陣列擴容 

這是對arraylist效率影響比較大的乙個因素。

每 當執行add、addrange、insert、insertrange等新增元素的方法,都會檢查內部陣列的容量是否不夠了,如果是,它就會以當前容量 的兩倍來重新構建乙個陣列,將舊元素copy到新陣列中,然後丟棄舊陣列,在這個臨界點的擴容操作,應該來說是比較影響效率的。

例1:比如,乙個可能有200個元素的資料動態新增到乙個以預設16個元素大小建立的arraylist中,將會經過:

16*2*2*2*2 = 256

四次的擴容才會滿足最終的要求,那麼如果一開始就以:

arraylist list = new arraylist( 210 );

的方式建立arraylist,不僅會減少4次數組建立和copy的操作,還會減少記憶體使用。

例2:預計有30個元素而建立了乙個arraylist:

arraylist list = new arraylist(30);

在執行過程中,加入了31個元素,那麼陣列會擴充到60個元素的大小,而這時候不會有新的元素再增加進來,而且有沒有呼叫trimsize方法,那麼就有1次擴容的操作,並且浪費了29個元素大小的空間。如果這時候,用:

arraylist list = new arraylist(40);

那麼一切都解決了。

所以說,正確的預估可能的元素,並且在適當的時候呼叫trimsize方法是提高arraylist使用效率的重要途徑。

頻繁的呼叫indexof、contains等方法(sort、binarysearch等方

法經過優化,不在此列)引起的效率損失

首先,我們要明確一點,arraylist是動態陣列,它不包括通過key或者value快速訪問 的演算法,所以實際上呼叫indexof、contains等方法是執行的簡單的迴圈來查詢元素,所以頻繁的呼叫此類方法並不比你自己寫迴圈並且稍作優化來 的快,如果有這方面的要求,建議使用hashtable或sortedlist等鍵值對的集合。

List遍歷方式

list遍歷方式,哪種方式最快 方法1 集合類的通用遍歷方式,從很早的版本就有,用迭代器迭代 iterator it1 list.iterator while it1.hasnext 方法2 集合類的通用遍歷方式,從很早的版本就有,用迭代器迭代 for iterator it2 list.itera...

List集合的迴圈遍歷方式

list集合的特點 list集合的三種遍歷方式 建立乙個arraylist集合 我就用arraylist舉例 該集合屬於list介面其中之一的實現類 arraylist linkedlist vector 同理遍歷方式相同 listlist new arraylist 向集合中新增一些元素 list...

遍歷List的三種方式

對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行 過程中會進行資料鎖定,效能稍差,同時,如果你想在尋歡過程...