JAVA集合類(上)
阿新 • • 發佈:2018-03-15
每次 short 數組 哪些 開始 分享 bsp image ring
Java有哪些數據存儲方式?
- 基本數據類型(1byte3整2小1字符1布爾)分別是byte,short,int long,flort,double,char,boolean
- String
- 自定義封裝類(PO,VO等實體類)
- 數組,存儲一組數據,可以是基本數據類型,也可以是引用數據類型,但只能是同一類型,並且大小一定
- 集合類,作用與數組類似,也可以存儲一組數據,也稱作容器類
為什麽出現集合類?集合類與數組的區別是什麽?
數組的特點:
- 一個數組只能存儲同一種數據類型的數據
- 數組長度不可變,定義數組時必須定義長度
- 數組的存儲方式只有一種,需要通過遊標定位,遊標從0開始,不能訪問範圍外的遊標
集合類的特點:
- 一個集合類可以存儲多種數據類型的數據(對象一旦被放入集合類中,集合類都會把它當作是Object類型處理,這也是集合類可以存儲多種數據類型的數據的原因)
- 集合類的長度可變
- 每種集合類的存儲方式各不相同,可根據實際情況選用適當的集合類
- 集合類提供了一些排序、比較等方法,方便我們使用
JAVA體系中的集合類有什麽?
從圖中我們可以得到什麽信息呢?該圖說明,紅色的是常用的集合實現類,主要是分為2個接口Collection Map,分類的依據是2者的存儲方式不同
- Collection是孤立元素的對象集合,一次存一個元素,屬於單列集合
- Map是成對元素的對象集合(“鍵—值”對),一次存一對元素,屬於雙列集合
什麽是泛型?
我們對集合類進行編譯時,編譯器會出現警告(黃色感嘆號),集合類之所以可以存儲不同類型的數據,是因為對象一旦被放進集合後,集合類都會把它當作是Object類型處 理。這樣做會帶來兩個問題:
- 每次取出集合元素,都要進行強制類型轉換,不僅代碼臃腫,而且增加了編程的復雜度
- 集合對元素類型沒有任何限制,假如只想創建一個Dog對象的集合,但是程序可以輕易把一個Cat對象放入集合中,那在取出集合元素時,如果將一個Cat類型的對象強制轉換為Dog類型,就會引起ClassCastException異常
泛型如何解決問題?
定義了泛型之後,容器中就只能存放對應泛型的數據類型。
使得集合類記住集合元素的數據類型,保證程序在編譯時沒有警告,運行時沒有ClassCastException異常。
JAVA集合類(上)