head first java ( 16章 )
java 有現成的數據結構可以使用
ArrayList不是唯一的集合, TreeSet, HashMap, LinkedList 等等都是集合,但是,
實際上還是 ArrayList 比較實用
- 泛型中重要的事情( <>代表泛型 )
? 1. 創建ArrayList時你必須指定它所容許的對象, 就像單純數組那樣.
? 2. 多態遇到泛型, 例如 ArrayList<Animal> = new ArrayList<Dog>(), ArrayList<Dog> = new ArrayList<Animal>()
???? 顯然,上面藍色的可以, 紅色的不行, 你將Dog作為值傳遞給Animal, 這沒有問題, dog 當然時動物, 但是反過來就不行了.
? 3. 如何取用泛型里的元素
- ArrayList 類
? public class ArrayList<E> extends AbstractList<E> implements List<E> {
??? public boolean add ( E o )
? }
? // 以上代碼中的 E 可以用 T等任意字母替換
- 運用泛型的方法
?
?
?
? 注意: 以上看著有點蒙,分解一下就好了(看下圖)
?
? -- ArrayList 類定義( 所以該類得全稱應該是 ArrayList<T>, 其中T是參數類型 )
? public class ArrayList<T> extends AbstractList<E> implements List<E>
- LIST, SET, MAP?
? List: 知道索引順序,對付順序是好手
? Set: 不準許重復
? Map: 用key來搜索
- 相等性問題
?
?
如果改寫了 equals 方法就必須要改寫 hascode方法
數組的類型是在運行期間檢查的,但是集合類型檢查只會發生在編譯期間(不能多態)
所以,引入萬用類型, 比如 T
public <T extends Animal> void takeThing(ArrayList<T> list)
public void takeThing(ArrayList<? extends Animal> list)
以上兩行程序是等價的, 第一行的把類型提前了,更好看一點
轉載于:https://www.cnblogs.com/moveofgod/archive/2013/04/18/3027816.html
總結
以上是生活随笔為你收集整理的head first java ( 16章 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【西交ACM】298 第N大的数
- 下一篇: 【Notepad++】Notepad++