Java集合框架學習:01
-
Java集合框架:
-
集合框架被設計成要滿足以下幾個目標:
-
該框架必須是高效能的;基本集合(動態陣列,連結串列,樹,雜湊表)的實現也必須是高校的;
-
該框架允許不同型別的集合,以類似的方式工作,具有高度的互操作性;
-
對一個集合的擴充套件和適應必須是簡單的;
-
-
-
Java集合框架主要包括2種類型的容器:
-
一種是集合(Collection),儲存一個元素集合;
-
另一種是圖(Map),儲存鍵/值對對映;
-
Collection介面又有3種子型別,List,Set和Queue,再下面是一些抽象類,最後是具體的實現類;
-
常用的集合實現類:ArrayList ,LinkedList , HashSet ,LinkedhashSet ,HashMap ,LinkedHashMap等;
-
-
集合框架是一個用來代表和操作集合的統一架構,所有的集合框架都包含如下內容:
-
介面:
-
是代表集合的抽象資料型別,例如:Collection, List ,Set ,Map等;
-
之所以定義多個介面,是為了滿足不同的方式操作集合物件;
-
-
實現類:
-
是集合介面的具體實現;從本質上說,他們是可重複使用的資料型別;
-
例如:ArrayList , LinkedList ,HashSet , HashMap等
-
-
演算法:
-
是實現集合介面的物件裡的方法執行的一些有用的計算;
-
例如:搜尋和排序;這些演算法被稱為多型;
-
-
-
除了集合,該框架也定義了幾個Map介面和類,Map裡儲存的鍵/值對,儘管Map不是集合,但是他們完全整合在集合中;
-
集合介面:
-
集合框架定義了一些介面:具體如下:
序號 介面描述 1 Collection介面: Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素,Java不提供直接繼承自Collection的類,只提供繼承它的子介面(List和Set) Collection介面儲存一組不唯一,無序的物件; 2 List介面: LIst介面是一個有序的Collection,使用此介面能夠精確的控制每個元素插入的位置,能夠通過索引來訪問List中的元素,第一個元素的索引是0,而且允許有相同的元素; LIst介面儲存一組不唯一,有序(插入順序)的物件; 3 Set介面: Set具有與Collection完全一樣的介面,只是行為上不同,Set不儲存重複的元素; Set介面儲存一組唯一,無序的物件; 4 SortedSet介面: 繼承於Set儲存有序的集合; 5 Map介面: Map介面儲存一組鍵值物件,提供key到value的對映; 6 Map.Entry: 描述在一個Map中的一個元素(鍵值對),是一個Map的內部介面; 7 SortedSet: 繼承於Map,使key保持在升序排列; 8 Enumeration: 已經被迭代器取代; 總結:Set和List的區別:
-
Set介面儲存唯一,但無序的資料;List儲存的是有序,但不唯一的資料;
-
Set檢索效率低下,刪除和插入效率高;插入和刪除不會引起元素位置改變;
-
List和陣列類似,可以動態增長,根據實際儲存資料的長度自動增長List的長度;查詢效率高,插入和刪除效率低,因為會引起其他元素位置改變;
-
-
-
集合實現類:
-
Java提供了一套實現了Collection介面的標準集合類;
序號 類描述 1 AbstractCollection: 實現了大部分的結合介面; 2 AbstractList: 繼承於AbstractCollection並且實現了大部分List介面; 3 AbstractSqquentialList: 繼承於AbstractList,提供了對資料元素的鏈式訪問而不是隨機訪問; 4 LinkedList: 該類實現了List介面,允許有null元素,主要用於建立連結串列資料結構,該類沒有同步方法,如果多個執行緒同時訪問一個List,則必須自己實現訪問同步,解決方法就是在建立List時候構造一個同步的List; LinkedList查詢效率低; 5 6 7 8 9 10 -
筆記:
-
-
-
集合演算法:
-
如何使用迭代器:
-
程式碼案例:
public class ListDemo01 {
public static void main(String[] args) {
//建立集合
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("Google");
arrayList.add("baidu");
arrayList.add("haha");
//獲取迭代器
Iterator<String> it=arrayList.iterator();
System.out.println(it.next());//Google
//迴圈輸出
while (it.hasNext()){
System.out.println(it.next());//Google baidu haha
}
}
}
-