《JAVA編程思想》學習筆記——第十一章 持有對象

    JAVA容器類類庫的用途是 "保存對象",並將其劃分爲兩個不一樣的概念:
數組

    1) Collection。一個獨立元素的序列,這些元素都服從一條或多條規則。List必須按照插入的順序保存元素,而Set不能用重複元素。Queue按照排隊規則來肯定對象產生的順序(一般與它們被插入的順序相同)
ide

    2)Map。一組成對的 "鍵值對" 對象,容許你使用鍵來查找值。ArrayList容許你使用數字
測試


    Arrays.asList()方法接受一個數組或是一個用逗號分隔的元素列表(使用可變參數),並將其轉換爲一個List對象。Collections.addAll()方法接受一個Collection對象,以及一個數組或是一個用逗號分割的列表,將元素添加到Collection中。
優化


    List
對象

    由兩種基本類型的List:
blog

    基本的ArrayList,它長於隨機訪問元素,可是在List的中間插入和移除元素時較慢。
排序

    LinkedList,它經過代價較低的List中間進行的插入和刪除操做,提供了優化的順序訪問。LinkedList在隨機訪問方面相對比較慢,可是它的特性集較ArrayList更大。
接口


    Stack:"棧"一般是指"後進先出" (LIFO)的容器。Stack能夠基於LinkedList實現
隊列


    Set
rem

    Set不保存重複的元素。Set中最常被使用的是測試歸屬性,你能夠很容易地詢問某個對象是否在某個Set中。正因如此,查找就成爲了Set中最重要的操做,所以你一般都會選擇一個HashSet的實現,它專門對快速查找進行了優化。TreeMap基於紅黑樹,有序。LinkedHashSet基於鏈表,有序。


    Map

    將對象映射到其它對象


    Queue

    隊列是一個典型的先進先出(FIFO)的容器。即從容器的一端放入事物,從另外一端取出。隊列常被當作一種可靠的將對象從程序的某個區域傳輸到另外一個區域的途徑。

    LinkedList提供了方法以支持隊列的行爲,而且它實現了Queue接口,所以LinkedList能夠用做Queue的一種實現。經過將LinkedList向上轉型爲Queue。


    PriorityQueue

    優先級隊列聲明下一個彈出的元素是最須要的元素(具備最高的優先級)。當你在PriorityQueue上調用offer(0方法插入一個對象時,這個對象會在隊列中被排序。默認的排序將使用對象在隊列中的天然排序,可是你能夠經過提供本身的Comparator來修改這個順序。PriorityQueue能夠確保當你調用peek(), poll()和remove()方法時,獲取的元素將是隊列中優先級最高的元素。



    集合圖

    wKioL1jaVvujVia5AAEEokJ6HCQ196.png-wh_50

相關文章
相關標籤/搜索