容器 ArrayList學習

2021-10-07 04:42:13 字數 2632 閱讀 6016

陣列也是一種容器,但是容器更加靈活、更加強大,它的容量是隨時可擴的。

set、list繼承collection;

實現set介面:hashset;

實現list介面:arraylist、linkedlist;

實現map介面:hashmap。

list是有序、可重複的容器

list介面的實現類有:arraylist、linkedlist和vector

arraylist底層是用陣列實現儲存的。

特點:查詢效率高

增刪效率低

執行緒不安全

可存放任意數量的物件,但是對陣列來說,它的陣列長度是有限的。原因:arraylist類中有長度自動擴容的方法(超出本身長度的話,長度就會自身增加本身長度的一半,再把原來長度中的資料copy到新的長度陣列中來。檢視原始碼可知)

下面一些基本方法可以檢視arraylist中的原始碼。為了加深對arraylist的了解,手動去實現乙個arraylist。

arraylist中一些基本方法:

手工實現arraylist:

package arraylisttest;

//手工實現arraylist,體會底層原理

public

class

arraytest5

public

arraytest5

(int capacity)

throws exception

else

if(capacity<0)

else

}public

intsize()

public

boolean

iselmpty()

public

void

add(e element)

elementdate[size++

]= element;

}public

void

add(

int index,e x)

throws exception

//方便其它需要檢查索引的呼叫

public

void

check

(int index)

throws exception

}//輸入索引獲取值

public e get

(int index)

throws exception

//為index位置設定值

public

void

set(e element,

int index)

throws exception

//indexof查詢方法

public

intindexof

(object x)

public

intindexofrange

(object x,

int start,

int end)}}

else}}

return-1

;}//remove方法

public

void

remove

(e element)

throws exception }}

public

void

remove

(int index)

/*elementdate[size-1] = null;

size--;

相當於如下:*/

elementdate[

--size]

= null;

}//重寫tostring方法

public string tostring()

sb.setcharat

(sb.

length()

-1,']');

return sb.

tostring()

;}public

static

void

main

(string[

] args)

throws exception

system.out.

println

(s1)

; system.out.

println

(s1.

get(10)

);s1.

set(

"呼",15)

; system.out.

println

(s1)

; s1.

remove

("哈20");

system.out.

println

(s1)

; system.out.

println

(s1.

indexof

("哈13"))

; s1.

add(2,

);system.out.

println

(s1);}

}

【結果】

java容器學習,ArrayList

一 類圖 二 持有屬性 三 講解modcount屬性 四 構造器 五 擴容 六 內部類 二 arraylist持有屬性 private static final int default capacity 10 預設擴容大小,第一次擴容,如果容器大小小於10,預設為10 private static ...

ArrayList容器remove方法失效?

問題深究原始碼 原因解決方案 最近在寫增刪改查的時候遇到乙個問題,苦思冥想了很久,最後旁邊的小哥哥一句 看原始碼就知道了 遂恍然大悟,晚上趁著還早,花點時間記錄下來。需求是這樣的 需要按照arraylist容器中元素的某乙個屬性刪除匹配的元素。public class userpublic stat...

AJPFX關於ArrayList集合容器的操作

1 建立 arraylist mylist new arraylist 代表建立出egg型別的list,新的arraylist物件會建立在堆上 2 加入元素 egg s new egg mylist.add s 此arraylist會產生乙個 盒子 來放egg物件 3 再加入元素 egg b new...