TreeMap的底层使用了红黑树来实现,像TreeMap对象中放入一个key-value 键值对时,就会生成一个Entry对象,这个对象就是红黑树的一个节点,其实这个和HashMap是一样的,一个Entry对象作为一个节点,只是这些节点存放的方式不同。
存放每一个Entry对象时都会按照key键的大小按照二叉树的规范进行存放,所以TreeMap中的数据是按照key从小到大排序的,通过重写父类compare()方法来确定排序规则。
public static void main(String[] args) {
TreeMap<String, String> map = new TreeMap<String, String>(new Comparator<Object>() {
Collator collator = Collator.getInstance();
public int compare(Object object1, Object object2) {
if (object1 == null || object2 == null)
return 0;
CollationKey ckey1 = collator.getCollationKey(String.valueOf(object1));
CollationKey ckey2 = collator.getCollationKey(String.valueOf(object2));
return ckey1.compareTo(ckey2);
}
});
for (int i = 0; i < 2; i++) {
String s = "" + (int) (Math.random() * 1000);
map.put(s, String.valueOf(i));
}
map.put("B", "baidu");
map.put("A", "alibaba");
map.put("T", "tencent");
map.put("BAT", "BAT");
map.put("湖南", "长沙");
map.put("湖北", "武汉");
map.put("北京", "北京");
map.put("天津", "天津");
/*Iterator<Entry<String, String>> it=map.entrySet().iterator();
while (it.hasNext()) {
System.out.println(it.next());
}*/
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey()+","+entry.getValue());
}
}