超類即父類。
HashSet的底層還是用HashMap來實現的。將Entry<K,V>的V都變成了同一個Object對象,public static final PRESENT = new Object()。
而HashMap的數據結構是數組+鏈表+紅黑樹。
調用K的hashCode方法,然後高低16位進行&運算。得到的hash值,與數組tab[](桶)的長度-1進行&運算,確定插入對象在哪一個桶上。然後調用對象的equals方法,形成鏈表。當鏈表長度大於8時,鏈表轉紅黑樹。
初始化過程:
- 初始化父類中的靜態成員變量和靜態代碼塊 ;
- 初始化子類中的靜態成員變量和靜態代碼塊 ;
3.初始化父類的普通成員變量和代碼塊,再執行父類的構造方法;
4.初始化子類的普通成員變量和代碼塊,再執行子類的構造方法;
(1)初始化父類的普通成員變量和代碼塊,執行 Y y=new Y(); 輸出Y
(2)再執行父類的構造方法;輸出X
(3) 初始化子類的普通成員變量和代碼塊,執行 Y y=new Y(); 輸出Y
(4)再執行子類的構造方法;輸出Z
所以輸出YXYZ
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class Main {
public void Mirror(TreeNode root) {
if(root == null) {
return;
}
TreeNode node = root.left;
root.left = root.right;
root.right = node;
if(root.left != null) {
Mirror(root.left);
}
if(root.right != null) {
Mirror(root.right);
}
}
}