原创 HashMap解讀(一)

HashMap原理 以jdk1.8進入主題。 存儲原理: 數組+鏈表 或 紅黑樹 源碼解讀: 初始數據: 先看幾個較爲重要的屬性(越少你看的越清楚) //數組長度的初始值 static final int DEFA

原创 什麼是LinkedList?

第八週鏈表雙向鏈表LinkedList和ArrayList卻別安全性:添加元素遍歷元素 鏈表 在瞭解LinkedList之前,我們需要了解一下什麼是鏈表: 假設我們有這樣一條"路徑",那我們就稱爲它就是一條鏈表,直接上代碼: p

原创 ArrayList底層(二)

第七週有參構造:有參add方法:1.rangeCheckForAdd()2.ensureCapacityInternal()3.System.arraycopy() 有參構造: public ArrayList(int initi

原创 ArrayList底層

第七週一、安全性二、存儲結構:1.構造方法:1.add方法: 一、安全性 ArrayList是一個非線程安全的 只要一個類中出現了一個競爭條件,還沒有任何的預防方案,它就是非線程安全的。 二、存儲結構: ArrayList其實就

原创 手寫紅黑樹

第六週紅黑樹(二)一.插入1.變色:2.旋轉3.代碼 紅黑樹(二) 一.插入 插入的所有結點默認是紅色。插入結點稱爲默認結點 1.變色: 條件:父親結點是紅色,叔叔結點是紅色 操作: (1)父親結點變成黑色。 (2)叔叔結點變成黑

原创 equals比較對象

第四周equals類和對象類:對象:關係:equals比較: equals 上一篇講了String類中的equals方法,由於String是由多個char組成,所以可以轉換成char數組逐個比較。 類和對象 類: 對事物的一個分類

原创 被詛咒的循環

第五週循環謎題解: 循環謎題 while(i<=j&&j<=i&&i!=j){ } 如上代碼 我們只能對i和j進行聲明,這個循環可能被執行嗎? 從邏輯上看,這樣的邏輯絕對不可能存在。 解: 通過我的上兩篇帖子介紹了 :

原创 冒泡優化

第三週代碼思路對比:經典冒泡:優化冒泡: 代碼 廢話少說,先上代碼: System.out.print("排序前:"); for(int i=0;i<N;i++){ a[i] = (int)(Math.random()*