Java 集合類——Collections(1)

ahiru?發表於2019-02-26

廢話不多說,先上關係圖

Java 集合類——Collections(1)

集合類介面

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的所有元素
}複製程式碼


相關文章