java學習初探十三之集合

一、集合分爲兩部分(Collection和Map)
1.Collection
只能存儲引用類型,並且只能單個存儲。
(1)Collection繼承結構圖
這裏寫圖片描述
List存儲元素的特點:有序可重複,存進去什麼順序取出來還是什麼順序。
Set存儲元素的特點:無序,不可重複。存進去的時候是一個順序,取出的時候不一定什麼順序了。
SortedSet存儲元素的特點:無序,不可重複。但是存儲進去的元素可以按照元素的大小排序。
(2)底層數據結構
ArrayList底層數據結構:數組存儲元素的,所以ArrayList適合查詢,不適合頻繁的隨機增刪元素。
LinkedList底層採用雙向鏈表存儲數據元素的,適合增刪元素,不適合查詢操作。
Vector底層和ArrayList相同,但是Vector是線程安全的。效率較低,所以現在很少使用。

2.Map
(1)Map集合的繼承結構圖:
這裏寫圖片描述
Map集合以鍵值對的方式存儲元素,鍵特點無序不可重複。Map和Collection沒有關係。

3.雙向鏈表和單向鏈表
單向鏈表
單向鏈表

(主要針對1中的LinkedList)
(1)提問:爲什麼單向鏈表查詢效率低?
因爲單向鏈表中的元素在空間的存儲位置上沒有規律,也沒有順序,那麼在查找某個元素的時候必須從頭節點挨着往後找,直到找到爲止。
(2)爲什麼單向鏈表的增刪效率高?
因爲鏈表每個元素存儲的空間是沒有順序的,刪除或者添加某個元素,只需要讓指針重新指向即可,不需要將其他元素位移。所以隨機增刪效率較高。

/*
 * 使用java模擬單向鏈表(待完善)
 */
public class Linked {
    //節點
    Entry entry;
    Linked(){
        //只有一個頭節點
        entry=new Entry(null,null);
    }
    //add

    //remove

    //find

    //靜態內部類
    static class Entry{
        //Filed
        Object data=null;
        Entry next;

        //constructor
        Entry(Object data,Entry next){
            this.data=data;
            this.next=next;
        }
    }
}

雙向鏈表
雙向鏈表是一個環狀
雙向鏈表
節點由三部分組成:指向上一個節點的內存地址,數據,指向下一個節點的內存地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章