TreeSet原始碼閱讀

2021-08-30 09:52:04 字數 735 閱讀 2000

treeset類的設計基於實現red-black樹的treemap類。基本上,乙個treeset物件是所有元素(節點)都有相同值(樹中節點的value資料域)的treemap物件,treeset會忽略掉treemap集合中元素的value,只使用元素的key。下面是treeset類的字段:

private transient sortedmap m;     // treeset基於sortedmap的實現

private transient set keyset; // sortedmap實現的key檢視,因為treeset只使用到map中元素的key域

// 向treeset集合中加入乙個元素,實質上就是向它所基於的map中put乙個元素,且這個元素的值(value)就是下面這啞元物件

private static final object present = new object();

我們看看它的預設建構函式:

public treeset()
從上面可以看出,treeset基於treemap來實現的,當然你可以使用乙個實現了sortedmap介面的類

private treeset(sortedmap m)
再看看put方法:

public boolean add(object o)
所以要搞清楚treeset還得要看懂treemap 才行~!

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...