treemap使用了紅黑樹的結構,看下原始碼,記錄用。
public v put(k key, v value)
//比較結果
int cmp;
// 父節點
entryparent;
comparator<? super k> cpr = comparator;
//從root開始,用key和節點的key進行比較,小的找左樹,大的找右樹,相同就賦值然後返回。當t==null時,parent就是該節點父節點
//使用自定義比較器
if (cpr != null) while (t != null);
}//使用key的預設比較器
else while (t != null);
}//新節點e
entrye = new entry<>(key, value, parent);
// 小的放在左兒子
if (cmp < 0)
parent.left = e;
//其它放右兒子
else
parent.right = e;
//修復樹的平衡
fixafterinsertion(e);
size++;
modcount++;
return null;
}private void fixafterinsertion(entryx) else
//把x的父親設為黑色
setcolor(parentof(x), black);
//把x的爺爺設為紅色
setcolor(parentof(parentof(x)), red);
//右旋x的爺爺
rotateright(parentof(parentof(x)));
}//爸爸是爺爺的右兒子
} else else
//設定x父親顏色為黑色
setcolor(parentof(x), black);
//爺爺為紅色
setcolor(parentof(parentof(x)), red);
//左旋爺爺
rotateleft(parentof(parentof(x)));}}
}//根永遠是黑色
root.color = black;
}
jdk8學習總結
今天抽點時間對jdk8寫個總體的學習總結,一來當作乙個覆盤加深理解,二來也希望能夠對閱讀的朋友們有一點點幫助,同時也希望大家對文中不準確的內容予以指出。1 函式式介面與lambda表示式 首先說一下函式式介面的概念 介面中的抽象方法如果是重寫了object類的方法的話,是不參與計數的 另外如果乙個介...
jdk8 之方法引用
方法引用 實際上是lamda函式的語法糖 有時候並不適用 我們可以講方法引用看做乙個函式指標.function pointer 方法引用分為4類 類名 靜態方法名 建立乙個類 public class student public void setname string name public in...
JDK8的新特性
這兩天開始看jdk8的新特性,先看了lembda表示式和stream,就乙個感覺,優雅。趕緊將這兩天的成果總結一下 lembda表示式是乙個簡潔 可傳遞的匿名函式,實現了把 塊賦值給乙個變數的功能 格式就是 parameters expression,需要注意的是 引數可以為空 引數為乙個值得時候,...