線性表List
- 可以有重複元素。
- ArrayList 中數據存放的位置和我們添加數據的前後順序一樣。
- 如果需要通過下標隨機訪問元素,而不會在線性表起始位置插入或刪除元素,那麼ArrayList提供了最高效率的合集。如果需要在線性表的起始位置插入或刪除元素,就應該選擇LinkedList類。
- 除了包含用於訪問和修改向量的同步方法之外,Vector類和ArrayList類是一樣的。如果不需要同步,使用ArrayList比使用Vector效率更高。
- ArrayList ---- vs-------- LinkedList
ArrayList
1.插入/刪除數據速度慢。因爲要把插入點後所有對象移位。
2.順序結構,可直接定位到某個位置的對象,定位速度快。
LinkedList
1.插入,刪除數據快。只要斷開插入點的連接,重新連接到別的塊就OK。
2.鏈表結構,不可以直接定位到某個位置的對象,必須根據鏈表的方向一個一個找,定位速度慢。
集合set
- 集合(set)是一個用於存儲和處理無重複元素的高效數據結構。
- 集合的三個具體類:HashSet、LinkedHashSet、TreeSet。
- 在測試一個元素是否在集合或者線性表中時,集合比線性表更加高效。
- HastSet 中數據存放的位置和添加順序無關,和HashCode有關。
- HashSet: 無序
LinkedHashSet: 按照插入順序
TreeSet: 從小到大排序
映射表Map
- 映射表(map)類似於目錄,提供了使用鍵值快速查詢和獲取值得功能。不能有相同的鍵,每個鍵可以映射最多一個值。
- 可以使用三個具體的類來創建一個映射表:HashMap、LinkedHashMap和TreeMap。
- 對於定位一個值、插入一個條目以及刪除一個條目而言,HashMap類是高效的。
- TreeMap 類在遍歷排好順序的鍵時是很高效的。
- HashMap中條目的順序是隨機的,沒有順序;
LinkedHashMap 支持映射表中的條目排序,條目可以按某種順序(插入順序、訪問順序)來獲取
TreeMap中的條目是按鍵的升序排列的。 - HashMap 可以存放 null,不是線程安全的類
Hashtable
不能存放null,是線程安全的類