日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java之TreeMap詳解

 太極混元天尊 2018-05-25


推薦閱讀:


TreeMap 簡介


1. 是一個有序的key-value集合,它是通過紅黑樹實現(xiàn)的。該映射根據(jù)其鍵的自然順序進行排序,或者根據(jù)創(chuàng)建映射時提供的 Comparator 進行排序,具體取決于使用的構(gòu)造方法。


2.是繼承了AbstractMap,也是以key-value集合存儲。實現(xiàn)了NavigableMap接口,可以支持一系列的導航方法。

比如返回有序的key集合。實現(xiàn)了Cloneable克隆接口。實現(xiàn)了java.io.Serializable序列化接口。另外,TreeMap是非同步的。 



構(gòu)造方法


TreeMap()

          使用鍵的自然順序構(gòu)造一個新的、空的樹映射。


TreeMap(Comparator comparator)

          構(gòu)造一個新的、空的樹映射,該映射根據(jù)給定比較器進行排序。


TreeMap(Map m)

          構(gòu)造一個與給定映射具有相同映射關(guān)系的新的樹映射,該映射根據(jù)其鍵的自然順序 進行排序。


TreeMap(SortedMap m)

          構(gòu)造一個與指定有序映射具有相同映射關(guān)系和相同排序順序的新的樹映射。



常用方法


size() 


    返回此映射中的鍵-值映射關(guān)系數(shù)。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');
/**
* 測試size方法,打印應(yīng)該是4
*/

System.out.println(tree.size());
結(jié)果:4


put(K key, V value) 

          將指定值與此映射中的指定鍵進行關(guān)聯(lián)。

這個put方法上面已經(jīng)測試過了就不需要在演示了。


putAll(Map map)

          將指定映射中的所有映射關(guān)系復制到此映射中。

Map map = new HashMap<>();
map.put('map1','map1');
map.put('map2','map2');
map.put('map3','map3');

TreeMap tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');
/**
* 測試putAll方法
*/

tree.putAll(map);
//將map的3個元素也添加進來了,打印的是7
System.out.println(tree.size());

結(jié)果:7


remove(Object key)

          如果此 TreeMap 中存在該鍵的映射關(guān)系,則將其刪除。

TreeMap tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

System.out.println('刪除前:'+tree.size());
/**
* 測試remove方法
*/

tree.remove('1');

System.out.println('刪除后:'+tree.size());

結(jié)果:
刪除前:4
刪除后:3


values()

          返回此映射包含的值的 Collection 視圖。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

/**
* values返回值為Collection的集合可以直接使用iterator遍歷
*/

Collection<String> values = tree.values();

Iterator<String> iterator = values.iterator();
while (iterator.hasNext()) {
  System.out.print(iterator.next() + '\t');
}

結(jié)果:zhangsan1  zhangsan2   zhangsan3  zhangsan4


ceilingEntry(K key)

          返回一個鍵-值映射關(guān)系,它與大于等于給定鍵的最小鍵關(guān)聯(lián);如果不存在這樣的鍵,則返回 null。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');
/**
* ceilingEntry的返回值為:Map.Entry
*  這個類中有g(shù)etKey(),getValue
*/

Map.Entry<String, String> stringStringEntry = tree.ceilingEntry('1');
//獲取元素的key
System.out.println('getKey:'+ stringStringEntry.getKey());
//獲取元素的value值
System.out.println('getValue:'+ stringStringEntry.getValue());

結(jié)果:
getKey:1

getValue:zhangsan1


containsKey(Object key)

          如果此映射包含指定鍵的映射關(guān)系,則返回 true。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

System.out.println('key為2的在集合中是否存在:'+tree.containsKey('2'));

結(jié)果:key為2的在集合中是否存在:true


containsValue(Object value)

          如果此映射為指定值映射一個或多個鍵,則返回 true。

TreeMap tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

System.out.println('value為zhangsan3的在集合中是否存在:'+tree.containsValue('zhangsan3'));

結(jié)果:value為zhangsan3的在集合中是否存在:true


entrySet()

          返回此映射中包含的映射關(guān)系的 Set 視圖。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

/**
* entrySet方法返回值也是set,也可以使用
*/

Set<Map.Entry<String, String>> set = tree.entrySet();

/**
* 使用iterator遍歷
*/

Iterator<Map.Entry<String, String>> iterator = set.iterator();
while (iterator.hasNext()) {
  System.out.print(iterator.next() + '\t');
}

結(jié)果:1=zhangsan1  2=zhangsan2  3=zhangsan3  4=zhangsan4


firstEntry()

          返回一個與此映射中的最小鍵關(guān)聯(lián)的鍵-值映射關(guān)系;如果映射為空,則返回 null。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

/**
* firstEntry方法返回值Map.Entry
*/

Map.Entry<String, String> entry = tree.firstEntry();
//獲取鍵
System.out.println(entry.getKey());
//獲取值
System.out.println(entry.getValue());
結(jié)果:

1
zhangsan1


get(Object key)

          返回指定鍵所映射的值,如果對于該鍵而言,此映射不包含任何映射關(guān)系,則返回 null。

TreeMap tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');

//根據(jù)鍵來獲取值
System.out.println(tree.get('1'));

結(jié)果:zhangsan1



keySet()

          返回此映射包含的鍵的 Set 視圖。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');
/**
* 返回也是set集合,輸出都是key
*/

Set<String> set = tree.keySet();
/**
* 使用iterator遍歷
* */

Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
  System.out.print(iterator.next() + '\t');
}

結(jié)果:1 2 3 4


lastEntry()

          返回與此映射中的最大鍵關(guān)聯(lián)的鍵-值映射關(guān)系;如果映射為空,則返回null。

TreeMap<String,String> tree = new TreeMap<>();
tree.put('1','zhangsan1');
tree.put('2','zhangsan2');
tree.put('3','zhangsan3');
tree.put('4','zhangsan4');
     
/**
* 返回Map.Entry類型,輸出的一個元素
*/

Map.Entry<String, String> entry = tree.lastEntry();
System.out.print('key:' + entry.getKey());
System.out.println('value:' + entry.getValue());

結(jié)果:key:4   value:zhangsan4



TreeMap排序習題!


以上都是使用的字符串,而String類已經(jīng)即實現(xiàn)了比較的方法

【public int compareTo(String anotherString)】
,所以不會出問題,大家可以試試使用自定義一個Cat類

屬性:int id, String name,然后添加到treemap中去,看看會出現(xiàn)什么問題?


如果大家出現(xiàn)問題可以在初學者交流群討論和交流!??!


公眾號資源免費分享!?。?/p>

2017年某培訓班最新視頻+幾十個項目免費分享 公眾號輸入“我要視頻”


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多