1. 程式人生 > 實用技巧 >OOP-20年秋第五週

OOP-20年秋第五週

JAVA第五週

  1. Array Collection(←重點)

  2. 陣列是固定的fixed,存放是連續的,可以隨機訪問

  3. Collection只能有物件(基本資料型別會自動包裝)

  4. 如果是字串陣列
    –這個時候其實一個字串都沒有…

  5. 二維陣列是這麼分配空間的呢?
    –先弄一個一維陣列,這些一維數組裡面放的引用指向新的一維陣列
    –如此形成了二維陣列,而空間並不是連續的
    –由此有個區別 java和c不一樣 二維可以長度有變 變成鋸齒形狀
    在這裡插入圖片描述

  6. Arrays類類似System類是私有建構函式+靜態方法
    –可以使用sort快速排序之類的操作

  7. Collection是泛型,而且是個介面

  8. Set不可以重複

  9. List list =new Arraylist();

    –這樣很好!比Arraylist list好
    –為什麼叫Arraylist?
    –是一個線性表(陣列實現的),他的陣列擴容非常的複雜

  10. 什麼是Linkedlist?
    –單鏈表實現的

  11. Set和List差距很大
    –順序怎麼定的?
    –待
    –不能重複,會自動消掉

在這裡插入圖片描述

–因為沒重寫equals
–第一個加入一定不會比較,但是如果每個都會equals,那麼加入第100個就比100次,非常的不合理
–檢測重複值==查詢
–為了達到O(1)需要一個hash演算法
–所有判斷都和你的hashcode業務邏輯有關係
13. 由於業務邏輯可能不太好,可能會hashcode衝突,這個時候再使用equals進行比較可以很大程度上減少時間

14. Hash演算法到底提供了什麼幫助呢?
–底層可以看做一個連排的桶,hash值是一個索引,如果hash一樣就一起進入一個桶,這個時候會用equals比較,如果相等,不進入桶,如果不等,則正確進入桶內,此時equals比較的次數只看桶內長度的大小。
–不應該參加hash的是,會變的和辨識度低的,要選邏輯上很穩定的東西
15. 同時思考Treeset,它需要有一個能夠比較大小的邏輯,所以需要重寫compareto方法
–但是我從Comparable介面得到的比較不夠靈活(natural)
–解決辦法
在這裡插入圖片描述

–泛型規定了一個種類,亂七八糟的東西放不進去,特別安全
在這裡插入圖片描述

–防止你取的亂七八糟