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是非同步的。
TreeMap() 使用鍵的自然順序構(gòu)造一個新的、空的樹映射。
TreeMap(Comparator super K> comparator) 構(gòu)造一個新的、空的樹映射,該映射根據(jù)給定比較器進行排序。
TreeMap(Map extends K,? extends V> m) 構(gòu)造一個與給定映射具有相同映射關(guān)系的新的樹映射,該映射根據(jù)其鍵的自然順序 進行排序。
TreeMap(SortedMap m) 構(gòu)造一個與指定有序映射具有相同映射關(guān)系和相同排序順序的新的樹映射。 返回此映射中的鍵-值映射關(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
將指定值與此映射中的指定鍵進行關(guān)聯(lián)。 這個put方法上面已經(jīng)測試過了就不需要在演示了。
putAll(Map extends K,? extends V> 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
如果此 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
返回此映射包含的值的 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
返回一個鍵-值映射關(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
如果此映射包含指定鍵的映射關(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
返回此映射中包含的映射關(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
返回一個與此映射中的最小鍵關(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
返回指定鍵所映射的值,如果對于該鍵而言,此映射不包含任何映射關(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
返回此映射包含的鍵的 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
返回與此映射中的最大鍵關(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
以上都是使用的字符串,而String類已經(jīng)即實現(xiàn)了比較的方法 【public int compareTo(String anotherString)】 ,所以不會出問題,大家可以試試使用自定義一個Cat類 屬性:int id, String name,然后添加到treemap中去,看看會出現(xiàn)什么問題?
如果大家出現(xiàn)問題可以在初學者交流群討論和交流!??!
2017年某培訓班最新視頻+幾十個項目免費分享 公眾號輸入“我要視頻”
|