TreeMap 是一个有序的key-value集合,它是通过红黑树实现的,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。继承于AbstractMap,所以它是一个Map,即一个key-value集合。实现NavigableMap接口支持一系列的导航方法,比如返回有序的key集合。实现Cloneable接口能被克隆,实现java.io.Serializable接口支持序列化。
TreeMap的基本操作 containsKey、get、put 和 remove 的时间复杂度是 log(n) 。另外,TreeMap是非同步的。 它的iterator 方法返回的迭代器是fail-fastl的。
如何实现KEY排序,具体代码如下:
package com.test; import java.util.Iterator; import java.util.Map.Entry; import java.util.TreeMap; public class Test { public static void main(String[] args) { TreeMap<Object, Object> tree = new TreeMap<Object, Object>(); tree.put(9, "w"); tree.put(10, "w"); tree.put(12, "."); tree.put(11, "w"); tree.put(15, "o"); tree.put(13, "y"); tree.put(20, "o"); tree.put(21, "m"); tree.put(14, "o"); tree.put(19, "c"); tree.put(16, "d"); tree.put(17, "b"); tree.put(18, "."); String url = ""; for (Iterator<Entry<Object, Object>> iterator = tree.entrySet().iterator(); iterator.hasNext();) { Entry<Object, Object> it = iterator.next(); Object key = it.getKey(); Object value = it.getValue(); url += value; System.out.println("key=" + key + "---value=" + value); } System.out.println("欢迎收藏:" + url); } }
执行输出结果:
key=9---value=w key=10---value=w key=11---value=w key=12---value=. key=13---value=y key=14---value=o key=15---value=o key=16---value=d key=17---value=b key=18---value=. key=19---value=c key=20---value=o key=21---value=m 欢迎收藏:www.yoodb.com
总结:
1)TreeMap如果不指定排序器,默认将按照key值进行升序排序,如果指定了排序器,则按照指定的排序器进行排序。
2)具体的排序规则,可以通过开发人员在int compare()方法中进行指定。