廢話不多說,先上關係圖
集合類介面
List介面
List是列表型別,以線性方式儲存物件。
List介面的三個典型實現:
- List list = new ArrayList(); //底層資料結構是陣列,查詢快,增刪慢;執行緒不安全,效率高
- List list = new LinkedList(); //底層資料結構是連結串列,查詢慢,增刪快;執行緒不安全,效率高
- List list = new Vector(); //底層資料結構是陣列,查詢快,增刪慢;執行緒安全,效率低,幾乎已淘汰這個集合
- Stack stack = new Stack(); //Stack是Vector提供的一個子類,用於模擬“棧”這種資料結構(LIFO後進先出)
List介面常用方法:
- add(int index, Object obj):指定索引位置新增元素,後面物件的索引位置相對往後移。
- set(int index, E element):用指定元素替換列表指定位置的元素,返回以前在指定位置的元素。
- indexOf(Object obj):返回物件在列表中第一次出現的索引位置,如果集合不包含該元素則返回-1.
- lastIndexOf(Object obj):返回物件在列表中最後一次出現的索引位置,如果集合不包含該元素則返回-1.
- listIterator():用來獲得一個包含所有物件的ListIterator迭代器。
ArrayList
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess,
Cloneable, java.io.Serializable {
//版本號
private static final long serialVersionUID = 8683452581122892189L;
//預設容量
private static final int DEFAULT_CAPACITY = 10;
//空物件陣列
private static final Object[] EMPTY_ELEMENTDATA = {};
//預設空物件陣列
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
//元素陣列,用於存放實際元素,並標記為transient,意味著序列化的時候,此欄位不會被序列化。
transient Object[] elementData;
//實際元素大小,預設為0
private int size;
//最大陣列容量
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
}複製程式碼
建構函式
// 預設建構函式
ArrayList()
// capacity是ArrayList的預設容量大小。當由於增加資料導致容量不足時,容量會新增上一次容量大小的一半。
ArrayList(int capacity)
// 建立一個包含collection的ArrayList
ArrayList(Collection<? extends E> collection)複製程式碼
關鍵函式用法示例
public void test() {
List<String> list = new ArrayList<>();
list.add("a"); //增加元素
list.add(1, "bb"); //指定索引位置增加元素
System.out.println(list.get(0)); //獲取指定索引值的元素
System.out.println(list.size()); //獲取長度
list.set(1, "ccc"); //修改該索引值
list.remove(1); //移除指定索引值的元素
list.remove("a"); //移除指定元素
List<String> list1 = new ArrayList<>();
list1.add("zzz");
list1.add("xxx");
list.addAll(list1); //增加該collections的所有元素
for (String aList : list) {
System.out.println(aList);
}
list.removeAll(list1); //移除該collections的所有元素
}複製程式碼