操做 | 說明 | |
---|---|---|
addElement | 往樹中添加一個元素 | |
removeElement | 從樹中刪除一個元素 | |
removeAllOccurrences | 從樹中刪除所指定元素的任何存在 | |
removeMin | 刪除樹中的最小元素 | |
removeMax | 刪除樹中的最大元素 | |
findMin | 返回一個指向樹中最小元素的引用 | |
findMax | 返回一個指向樹中最大元素的引用 |
public void removeAllOccurrences(T targetElement) throws ElementNotFoundException { removeElement(targetElement); try { while (contains((T)targetElement)) removeElement(targetElement); } catch (Exception ElementNotFoundException) { } }
操做 | 說明 | LinkedList | BinarySearchTreeList |
---|---|---|---|
removeFirst | 刪除列表的首元素 | O(1) | O(logn) |
removeLast | 刪除列表的末元素 | O(n) | (logn) |
remove | 刪除列表中的一個特定元素 | O(n) | O(logn)* |
first | 考察列表前端的那個元素 | O(1) | O(logn) |
last | 考察列表末端的那個元素 | O(n) | O(logn) |
contains | 判斷列表是否含有一個特定元素 | O(n) | O(logn) |
is Empty | 斷定列表是否爲空 | O(1) | O(1) |
size | 斷定列表中的元素數目 | O(1) | O(1) |
add(有序列表特有) | 向列表添加一個元素 | O(n) | O(logn)* |
狀況 | 處理方式 |
---|---|
當前結點的父結點是紅色,且當前結點的祖父結點的另外一個子結點(叔叔結點)也是紅色。 | ①將「父結點」設爲黑色。 ② 將「叔叔結點」設爲黑色。 ③ 將「祖父結點」設爲「紅色」。 ④ 將「祖父結點」設爲「當前結點」(紅色結點);指針current由指向插入的結點變爲「當前結點「」,以後繼續對「當前結點」向上進行操做。 |
當前結點的父結點是紅色,叔叔結點是黑色,且當前結點是其父結點的右孩子 | ①將「父結點」做爲「新的當前結點」。 ②以「新的當前結點」爲支點進行左旋。 |
當前結點的父結點是紅色,叔叔結點是黑色,且當前結點是其父結點的左孩子 | ① 將「父節點」設爲「黑色」。 ②將「祖父節點」設爲「紅色」。 ③以「祖父結點」爲支點進行右旋。 |
interface A{} class B implements A{ } class C extends B { } class instanceoftest { public static void main(String[] args){ A a=null; B b=null; boolean res; System.out.println("instanceoftest test case 1: ------------------"); res = a instanceof A; System.out.println("a instanceof A: " + res); res = b instanceof B; System.out.println("b instanceof B: " + res); System.out.println("/ninstanceoftest test case 2: ------------------"); a=new B(); b=new B(); res = a instanceof A; System.out.println("a instanceof A: " + res); res = a instanceof B; System.out.println("a instanceof B: " + res); res = b instanceof A; System.out.println("b instanceof A: " + res); res = b instanceof B; System.out.println("b instanceof B: " + res); System.out.println("/ninstanceoftest test case 3: ------------------"); B b2=(C)new C(); res = b2 instanceof A; System.out.println("b2 instanceof A: " + res); res = b2 instanceof B; System.out.println("b2 instanceof B: " + res); res = b2 instanceof C; System.out.println("b2 instanceof C: " + res); } }
import java.util.*; class Demo<T extends List>{} public class Test { public static void main(String[] args) { Demo<ArrayList> p = null; // 編譯正確 //這裏由於ArrayList是List的子類因此經過 //若是改成Demo<Collection> p = null;就會報錯這樣就限制了上限 } }
import java.util.GregorianCalendar; class Demo<T extends Comparable<T>>{} //注意這裏是沒有? super的 public class Test { public static void main(String[] args) { Demo<GregorianCalendar> p = null; } }
import java.util.GregorianCalendar; class Demo<T extends Comparable<? super T>>{} public class Test1 { public static void main(String[] args) { Demo<GregorianCalendar> p = null; // 編譯正確 } }
html
這周沒有錯題哦~前端
這周的內容仍是比較可貴,不難在代碼上,難在內容的理解和理清它們之間的關係,根據不一樣的狀況進行不一樣的操做,上週因爲剛剛接觸學習樹,因此在代碼的理解上花費很多時間,這周主要是上網查詢了很多資料來弄明白各類狀況。但這周的學習時間並無減小,相反,我以爲比上週還要吃力,但學習完以後仍是明顯可以感受到本身的進步的,但願能在之後的學習生活中繼續努力,繼續進步吧!java
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
第一週 | 200/200 | 1/1 | 5/20 | |
第二週 | 981/1181 | 1/2 | 15/20 | |
第三週 | 1694/2875 | 1/3 | 15/35 | |
第四周 | 3129/6004 | 1/4 | 15/50 | |
第五週 | 1294/7298 | 1/5 | 15/65 | |
第六週 | 1426/8724 | 1/6 | 20/85 | |
第七週 | 2071/10795 | 1/7 | 20/105 |
計劃學習時間:20小時git
實際學習時間:20小時算法