Java中的TreeSet源碼解讀
TreeSet源碼解讀
特點(diǎn): 可以排序
解讀
- 當(dāng)我們使用無參構(gòu)造器[new TreeSet();] 創(chuàng)建TreeSet時,仍然是無序的
- 如果希望添加的元素,按照字符串大小來排序
- 使用TreeSet 提供的一個構(gòu)造器[ new TreeSet(new Comparator()],可以傳入一個比較器(匿名內(nèi)部類) 并指定排序規(guī)則
看看TreeMap(Comparator<? super K> comparator)的源碼
- 構(gòu)造器把傳入的比較器對象,賦給 TreeSet的底層的 TreeMap的屬性this.comparator
public TreeMap(Comparator<? super K> comparator) { this.comparator = comparator; }
- 在 調(diào)用 treeSet.add(“tom”), 在底層會執(zhí)行到 [TreeMap類里的add()方法]
Comparator<? super K> cpr = comparator; //把之前TreeMap里的比較器賦給cpr if (cpr != null) {//cpr 就是我們的匿名內(nèi)部類(對象) do { parent = t; cmp = cpr.compare(key, t.key); //動態(tài)綁定到我們的匿名內(nèi)部類(對象)compare if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else //如果相等,即返回0,這個Key就沒有加入 return t.setValue(value); } while (t != null); }
實(shí)際應(yīng)用
TreeSet treeSet = new TreeSet(new Comparator() { @Override public int compare(Object o1, Object o2) { //下面 調(diào)用String的 compareTo方法進(jìn)行字符串大小比較 //return ((String) o2).compareTo((String) o1); //如果老韓要求加入的元素,按照長度大小排序 return ((String) o1).length() - ((String) o2).length(); } });
到此這篇關(guān)于Java中的TreeSet源碼解讀的文章就介紹到這了,更多相關(guān)TreeSet源碼解讀內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn)
本文主要介紹了SpringBoot?熱搜與不雅文字過濾的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Java面試題-實(shí)現(xiàn)復(fù)雜鏈表的復(fù)制代碼分享
這篇文章主要介紹了Java面試題-實(shí)現(xiàn)復(fù)雜鏈表的復(fù)制代碼分享,小編覺得還是挺不錯的,具有參考價值,需要的朋友可以了解下。2017-10-10SpringBoot定時任務(wù)參數(shù)運(yùn)行代碼實(shí)例解析
這篇文章主要介紹了SpringBoot定時任務(wù)運(yùn)行代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06Java導(dǎo)出網(wǎng)頁表格Excel過程詳解
這篇文章主要介紹了Java導(dǎo)出網(wǎng)頁表格Excel過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07Vue3源碼解讀effectScope API及實(shí)現(xiàn)原理
這篇文章主要為大家介紹了Vue3源碼解讀effectScope API及實(shí)現(xiàn)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03mybatis-plus enum實(shí)現(xiàn)枚舉類型自動轉(zhuǎn)換
本文主要介紹了mybatis-plus enum實(shí)現(xiàn)枚舉類型自動轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07