java 集合基本概念掃盲貼

java 集合類掃盲貼,一塊兒學習一個進步

一秒鐘辨識集合結構java

集合類知識結構


學習java 集合前瞭解下數據結構的基本概念:算法

1數組:
概念:存中劃分出一塊連續的內存,數據順序存儲,讀取數據時須要提供數組的索引,java 只有相同類型的數據纔會存放在一個數組中。
複製代碼

優勢: 內存地址連續,尋址讀取數據容易,快速訪問。
    缺點: add,delete 須要挪動位置,不適合插入和刪除。
複製代碼
2鏈表:
概念:不會先劃出一塊連續的內存,存儲數據的內存中的會劃分兩塊區域 (數據區,指針區[記錄下個數據在哪的區]),鏈表是線性表,可是不是按線性存儲數據。
複製代碼

優勢:能利用好碎片空間,add,delete不需挪動位置 ,改變對應位置的記錄OK,適合插入和刪除操做。
  缺點:查詢數據須要從0 號數據開始,因此查找不容易。
複製代碼
3棧:
概念:先進後出的數據結構,數組和鏈表均可以生成棧
複製代碼

優缺點:基礎構成它數組或者鏈表的優缺點。
複製代碼

隊列數組

概念: 隊列是一種先進先出的數據結構,數組和鏈表也均可以生成隊列,數組和鏈表均可以生成棧
複製代碼

優缺點:基礎構成它數組或者鏈表的優缺點。
複製代碼

collection


1.list 實現類

(1)基本概念:用於存放多元素,由於維護元素次序,因此容許元素重複。安全

ArrayList
  • 數據結構:數組方式實現
  • 非線程安全: 多個線程能夠重複訪問一個ArrayList 對象
  • 數據:可重複,可爲null
優缺點:

 1.同數組

 2.或多線程環境下資源不須要寫、更新,只須要讀取,使用,或資源不須要受保護,使用ArrayList就大大提升了效率。 (可配合線程的讀寫鎖)

   優和調優:
  1.可預設設置  list 的大小 list.ensureCapacity(N); 提升添加新元素的速度
  2.遍歷時設置 for(int i = 0,size = list.size(); i < size ; i ++){}防止每次檢測大小,效率大大提升
複製代碼
vector
  • 數據結構:數組方式實現
  • 線程安全:某一刻只能有一個線程訪問統一ArrayList 對象,其每一個方法都爲同步方法【sychronized】
  • 數據:同上
優缺點:

  1.實現線程同步很高的花費 -> 訪問比ArrayList 慢
  2.多線程環境下,訪問收保護的資源,用vector 顯得十分簡潔
複製代碼
LinkedList
  • 數據結構:鏈表的實現方式
  • 非線程安全:多個線程能夠重複訪問一個LinkedList對象,多線程程序須要本身 實現同步(多線程程序實現同步的方式)
  • 數據:同上
  • 用途:看成堆棧、隊列和雙向隊列使用

優缺點:同鏈表數據結構

優化和調優:
  1.迭代器訪問LinkedList 最好 ,由於LinkedList 進行隨機訪問時,只會進行一次列表訪問。
複製代碼

2.set 集合實現類

(1)基本概念:元素是獨一無二的。多線程

HashSet
  • 數據結構:hash 鏈表 表的方式存儲,內存地址不連續,安裝hashCode值得順序存儲的
  • 非線程安全: 讀取速度快
  • 數據:不可重複(equals 方法保證數據的惟一性)
TreeSet
  • 數據結構: 紅黑樹(紅黑樹算法的規則: 左小右大。)
  • 非線程安全: 沒有實現線程同步,讀取速度快
  • 數據:不可重複(經過compareTo或者compare方法中的來保證元素的惟一性)

map


HashMap
  • 數據結構:散列表,存儲內容key-value 形式的映射。
  • 非線程安全:沒有實現線程同步。
  • 數據:能夠接受爲null的鍵值(key)和值(value).

詳解HashMappost

HashTable
  • 數據結構:散列表,存儲內容key-value 形式的映射。
  • 線程安全:由於值多線程同時修改HashMap 會ConcurrentModificationException.
  • 數據:不接受 null 爲 key和 null 爲value 值。
相關文章
相關標籤/搜索