TreeMap資料結構 jdk8

2022-05-07 12:09:09 字數 1181 閱讀 7252

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,需要注意的是 引數可以為空 引數為乙個值得時候,...