陣列也是一種容器,但是容器更加靈活、更加強大,它的容量是隨時可擴的。
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...