1. 程式人生 > >List&Set集合、Collections工具類

List&Set集合、Collections工具類

1 List集合

(1)List是Colleciton介面的一個子介面,常用的實現類有ArrayList  LinkedList

(2)List集合的特點

       (1)儲存單個元素,元素可重複,可以儲存多個null

       (2)儲存有序,存入順序和取出來的順序一致(例如:add(1);add(2);add(3); 遍歷列印集合  1,2,3);

       (3)元素具有索引值,所以方法中很多都是具有索引值引數

(3)常用方法(省略Collection中繼承的方法)

        (1)public void add(int index,E element):新增新元素

        (2)public E get(int index):獲取對應索引的元素

        (3)public E remove(int index):移除對應索引的元素,返回被移除的元素

        (4)public E set(int index,E element):替換對應索引的元素,返回被替換掉的元素

(4)常用子類

       (1)ArrayList

             1)底層採用陣列結構,查詢快(直接根據索引獲取對應元素),增刪慢(新增或刪除某個元素,需要移動陣列中其他陣列,如果容量不夠,還要重新建立一個數組,將原來的資料拷貝進去,所以速度慢)

       (2)LinkedList

             1)底層採用雙向迴圈連結串列,查詢慢(要獲取某個元素,需要逐級遍歷),增刪快(直接改變指地址指向即可)

                              

             2)LinkedList中特有的一些方法

                  1)public void addFirst(E e) :將指定元素插入此列表的開頭。                   2)public void addLast(E e) :將指定元素新增到此列表的結尾。                   3)public E getFirst() :返回此列表的第一個元素。                   4)public E getLast() :返回此列表的最後一個元素。                   5)public E removeFirst() :移除並返回此列表的第一個元素。                   6)public E removeLast() :移除並返回此列表的最後一個元素。                   7)public E pop() :從此列表所表示的堆疊處彈出一個元素(內部呼叫removeFirst)                   8)public void push(E e) :將元素推入此列表所表示的堆疊(內部呼叫addFirst)                   9)public boolean isEmpty() :如果列表不包含元素,則返回true

 2 Set集合

(1)Set是Collection的一個子介面,常用的實現類有HashSet、TreeSet

(2)特點:

       1)儲存單個元素,元素不能重複,可以儲存null,但只能出現一次

       2)儲存元素不能保證儲存有序,是按照底層資料結構規則進行儲存;

       3)儲存元素不具備索引值

(3)常用實現類

       1)HashSet

              1)底層使用雜湊表結構,查詢速度快,基於HashMap實現,雜湊表結構如圖1(元素內部不同但出現計算的hash值相同,就把新元素掛載在舊元素,下形成連結串列結構,jdk1.8後,如果掛載元素超過8個,從連結串列變為紅黑樹結構,提高訪問速度);

              2)被儲存的元素需要重寫hashCode和equals方法,HashSet會自動呼叫這兩個方法來判斷元素是否重複

        2)LinkedHashSet

              1)是HashSet的子類,底層採用雜湊表+連結串列的資料結構,實現了儲存的有序

3 Collections工具類

(1)常用方法

       1)public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中新增多個元素。        2)public static void shuffle(List<?> list) 打亂集合中元素順序。        3)public static <T> void sort(List<T> list) :將集合中元素按照預設規則排序,元素需要實現Comparable內部比較器          4)public static <T> void sort(List<T> list,Comparator<? super T> ) :將集合中的元素按照傳入的外部比較器的規則進行排序,傳入外部比較器的方式比較靈活,一般選用這種方式進行比較。