OOP-20年秋第五週
阿新 • • 發佈:2020-10-21
JAVA第五週
-
Array Collection(←重點)
-
陣列是固定的fixed,存放是連續的,可以隨機訪問
-
Collection只能有物件(基本資料型別會自動包裝)
-
如果是字串陣列
–這個時候其實一個字串都沒有… -
二維陣列是這麼分配空間的呢?
–先弄一個一維陣列,這些一維數組裡面放的引用指向新的一維陣列
–如此形成了二維陣列,而空間並不是連續的
–由此有個區別 java和c不一樣 二維可以長度有變 變成鋸齒形狀
 -
Arrays類類似System類是私有建構函式+靜態方法
–可以使用sort快速排序之類的操作 -
Collection是泛型,而且是個介面
-
Set不可以重複
-
List list =new Arraylist();
–為什麼叫Arraylist?
–是一個線性表(陣列實現的),他的陣列擴容非常的複雜 -
什麼是Linkedlist?
–單鏈表實現的 -
Set和List差距很大
–順序怎麼定的?
–待
–不能重複,會自動消掉

–因為沒重寫equals
–第一個加入一定不會比較,但是如果每個都會equals,那麼加入第100個就比100次,非常的不合理
–檢測重複值==查詢
–為了達到O(1)需要一個hash演算法
–所有判斷都和你的hashcode業務邏輯有關係
13. 由於業務邏輯可能不太好,可能會hashcode衝突,這個時候再使用equals進行比較可以很大程度上減少時間
–底層可以看做一個連排的桶,hash值是一個索引,如果hash一樣就一起進入一個桶,這個時候會用equals比較,如果相等,不進入桶,如果不等,則正確進入桶內,此時equals比較的次數只看桶內長度的大小。
–不應該參加hash的是,會變的和辨識度低的,要選邏輯上很穩定的東西
15. 同時思考Treeset,它需要有一個能夠比較大小的邏輯,所以需要重寫compareto方法
–但是我從Comparable介面得到的比較不夠靈活(natural)
–解決辦法

–泛型規定了一個種類,亂七八糟的東西放不進去,特別安全

–防止你取的亂七八糟