1. 程式人生 > >JAVA集合類(上)

JAVA集合類(上)

每次 short 數組 哪些 開始 分享 bsp image ring

  Java有哪些數據存儲方式?

  • 基本數據類型(1byte3整2小1字符1布爾)分別是byte,short,int long,flort,double,char,boolean
  • String
  • 自定義封裝類(PO,VO等實體類)
  • 數組,存儲一組數據,可以是基本數據類型,也可以是引用數據類型,但只能是同一類型,並且大小一定
  • 集合類,作用與數組類似,也可以存儲一組數據,也稱作容器類

  

  為什麽出現集合類?集合類與數組的區別是什麽?

  數組的特點:

  1. 一個數組只能存儲同一種數據類型的數據
  2. 數組長度不可變,定義數組時必須定義長度
  3. 數組的存儲方式只有一種,需要通過遊標定位,遊標從0開始,不能訪問範圍外的遊標

  集合類的特點:

  1. 一個集合類可以存儲多種數據類型的數據(對象一旦被放入集合類中,集合類都會把它當作是Object類型處理,這也是集合類可以存儲多種數據類型的數據的原因)
  2. 集合類的長度可變
  3. 每種集合類的存儲方式各不相同,可根據實際情況選用適當的集合類
  4. 集合類提供了一些排序、比較等方法,方便我們使用

  

  JAVA體系中的集合類有什麽?

技術分享圖片

  從圖中我們可以得到什麽信息呢?該圖說明,紅色的是常用的集合實現類,主要是分為2個接口Collection Map,分類的依據是2者的存儲方式不同

  • Collection是孤立元素的對象集合,一次存一個元素,屬於單列集合
  • Map是成對元素的對象集合(“鍵—值”對),一次存一對元素,屬於雙列集合

技術分享圖片

  什麽是泛型?

  我們對集合類進行編譯時,編譯器會出現警告(黃色感嘆號),集合類之所以可以存儲不同類型的數據,是因為對象一旦被放進集合後,集合類都會把它當作是Object類型處 理。這樣做會帶來兩個問題:

  • 每次取出集合元素,都要進行強制類型轉換,不僅代碼臃腫,而且增加了編程的復雜度
  • 集合對元素類型沒有任何限制,假如只想創建一個Dog對象的集合,但是程序可以輕易把一個Cat對象放入集合中,那在取出集合元素時,如果將一個Cat類型的對象強制轉換為Dog類型,就會引起ClassCastException異常

  泛型如何解決問題?  

  定義了泛型之後,容器中就只能存放對應泛型的數據類型。

  使得集合類記住集合元素的數據類型,保證程序在編譯時沒有警告,運行時沒有ClassCastException異常。

JAVA集合類(上)