一秒鐘辨識集合結構java
學習java 集合前瞭解下數據結構的基本概念:算法
概念:存中劃分出一塊連續的內存,數據順序存儲,讀取數據時須要提供數組的索引,java 只有相同類型的數據纔會存放在一個數組中。
複製代碼
優勢: 內存地址連續,尋址讀取數據容易,快速訪問。
缺點: add,delete 須要挪動位置,不適合插入和刪除。
複製代碼
概念:不會先劃出一塊連續的內存,存儲數據的內存中的會劃分兩塊區域 (數據區,指針區[記錄下個數據在哪的區]),鏈表是線性表,可是不是按線性存儲數據。
複製代碼
優勢:能利用好碎片空間,add,delete不需挪動位置 ,改變對應位置的記錄OK,適合插入和刪除操做。
缺點:查詢數據須要從0 號數據開始,因此查找不容易。
複製代碼
概念:先進後出的數據結構,數組和鏈表均可以生成棧
複製代碼
優缺點:基礎構成它數組或者鏈表的優缺點。
複製代碼
隊列數組
概念: 隊列是一種先進先出的數據結構,數組和鏈表也均可以生成隊列,數組和鏈表均可以生成棧
複製代碼
優缺點:基礎構成它數組或者鏈表的優缺點。
複製代碼
(1)基本概念:用於存放多元素,由於維護元素次序,因此容許元素重複。安全
優缺點:
1.同數組
2.或多線程環境下資源不須要寫、更新,只須要讀取,使用,或資源不須要受保護,使用ArrayList就大大提升了效率。 (可配合線程的讀寫鎖)
優和調優:
1.可預設設置 list 的大小 list.ensureCapacity(N); 提升添加新元素的速度
2.遍歷時設置 for(int i = 0,size = list.size(); i < size ; i ++){}防止每次檢測大小,效率大大提升
複製代碼
優缺點:
1.實現線程同步很高的花費 -> 訪問比ArrayList 慢
2.多線程環境下,訪問收保護的資源,用vector 顯得十分簡潔
複製代碼
優缺點:同鏈表數據結構
優化和調優:
1.迭代器訪問LinkedList 最好 ,由於LinkedList 進行隨機訪問時,只會進行一次列表訪問。
複製代碼
(1)基本概念:元素是獨一無二的。多線程
詳解HashMappost