Java 容器 回顧

  1. java.util
  2. 容器用於管理對象的生命週期,對象與對象之間的關係;容器類中存放的都是對象的引用,而非對象本身。
  3. 容器vs數組 :
  •  數組時Java的內置數據類型,是一個線性序列,可以快速訪問。
  • 一個數組創建後,其容量就固定了,並在其生命週期內不變。
  • Java在運行時會對數組做越界檢查。
  • 與容器相比,Java在編譯時會做類型檢查,防止插入錯誤類型的對象。
  • 數組效率高於容器類。
  • 數組可以持有基本數據類型。
     4. JAVA裏面提供的容器處理對象的時候就好像這些這些對象都沒有自己的類型一樣,容器將它所含的元素都看成是JAVA中根類Object類型的,這樣我們只需創建一種容器就能把所有的類型的對象全部放進去。
     5. 一張圖很好的說明了Java的集合框架結構

集合接口:6個接口(短虛線表示),表示不同集合類型,是集合框架的基礎。

  
抽象類:5個抽象類(長虛線表示),對集合接口的部分實現。可擴展爲自定義集合類。

  
實現類:8個實現類(實線表示),對接口的具體實現。
常用容器類使用注意:
涉及到堆棧,隊列等操作,用List
需要快速插入,刪除元素,使用LinkedList
需要快速隨機訪問元素 使用ArrayList 需要快速隨機訪問元素,使用ArrayList
Iterator是Java迭代器最簡單實現,只能單向移動
ArrayList和HashMap是異步的,不是線程安全的。
Vector和HashTable是同步的,是線程安全 Vector和HashTable是同步的,是線程安全的
因爲同步需要花費機器時間 所以V 和 因爲同步需要花費機器時間,所以Vector和HashTable的執行效率要低於 ArrayList和HashMap。
ArrayList: 元素單個,效率高,多用於查詢
Vector: 元素單個,線程安全,多用於查詢
LinkedList:元素單個 多用於插入和刪除 LinkedList:元素單個,多用於插入和刪除
HashMap: 元素成對,元素可爲空
HashTable: 元素成對,線程安全,元素不可爲空 
要根據不同問題的需要選擇合適的容器,以此來達到功能的要求和效率的最優儘量返回接口而非實際的類型
單線程環境中,或者訪問僅僅在一個線程中進行,考慮非同步類 其效率較高 慮非同步類,其效率較高
多個線程可能同時操作一個類,應使用同步類
對哈希表的操作,作爲key的對象要正確複寫equals和hashCode方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章