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> ) :將集合中的元素按照傳入的外部比較器的規則進行排序,傳入外部比較器的方式比較靈活,一般選用這種方式進行比較。