java數據結構
計算機存儲數據,組織數據的方式。
java數據結構的分類:
1.數組
最基礎的數據結構,也是剛接觸java時學的,編碼形式:類型 [] 變量名 = new 類型[個數];
優點:隨機讀取方便,快捷;
缺點:插入,刪除較複雜。
2.List《列表》
實現類:ArrayList,LinkedList。
ArrayList
優點 :隨機讀取較快。
缺點:插入刪除較麻煩。
LinkedList (以鏈表的形式存儲數據)
優點:插入刪除較簡單。
缺點:隨機讀取較複雜。
還有一種列表的數據結構叫Vector,它和上面兩個的區別在於Vector是線程安全。
3.Set《集合》
實現類:HashSet,TreeSet, LinkedHashSet
HashSet
帶有哈希表,以哈希算法的方式存儲數據。
TreeSet
帶有排序功能的集合,將插入的元素按照自己的排序算法進行排序,
當然了,也可以自己實現自己的排序算法。
LinkedHashSet
以鏈表的形式,同時運行哈希算法存儲數據。
4.Map《映射》
實現類:HashMap,LinkedHashMap,TreeHashMap,HashTable(線程安全),ConcurrentHashMap(線程安全)。
這裏主要講HashTable和ConcurrentHashMap的區別:
HashTable:單線程安全,一個線程訪問整張數據表,造成了浪費。
ConcurrentHashMap:可以理解爲多線程安全,將整張數據表分爲16個子表,減少了浪費,允許多個線程訪問整張表。
個人總結:
List和Set的區別在於,List允許存入的元素相同,Set不允許。
Map則是鍵值必須唯一
關於這些數據結構的名字:
包含Linked,都是採用鏈表的形式存儲,所以插入刪除較爲方便。
包含Hash,都是採用哈希算法,有一個哈希表。
包含Tree,一般該數據結構的數據都是有序的。