treemap是按键的ASCII码从小到大排序的,比如要对若干个带有时间属性的对象排序时,可以用时间作键,放到Treemap中,即是有序集合了.先不管性能,省了很多自己写排序的实现了.
默认是按key的ASCII码顺序由小到大排序的,如果要实现自定义的排序,则要重写treemap的比较器.
最简单的方法就是使用集合对象自带的方法,Collections.reverseOrder()
具体代码如下
package com.example.commonwtf2.test;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.junit.Test;
public class ExerciseTreeMap {
/**
* @see: 反序输出treemap
* */
@Test
public void outputTreeMap(){
Map<Long, Long> tMap = new TreeMap<>();
for(long i=0;i<40;i++){
tMap.put(i, i);
}
int i=0;
Set<Long> longSet = new HashSet<>();
for (long key : tMap.keySet()) {
if (i<20) {
System.out.println(key +";"+tMap.get(key));
}
i++;
}
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```");
Map<Long, Long> tMapRever = new TreeMap<>(Collections.reverseOrder());
tMapRever.putAll(tMap);
i=0;
for (long key : tMapRever.keySet()) {
if (i<20) {
System.out.println(key +";"+tMapRever.get(key));
}
i++;
}
}
}输出结果
0;0 1;1 2;2 3;3 4;4 5;5 6;6 7;7 8;8 9;9 10;10 11;11 12;12 13;13 14;14 15;15 16;16 17;17 18;18 19;19 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``` 39;39 38;38 37;37 36;36 35;35 34;34 33;33 32;32 31;31 30;30 29;29 28;28 27;27 26;26 25;25 24;24 23;23 22;22 21;21 20;20
这样就实现了treemap的反序输出,逆序输出,输出倒数几行等.
本文出自 “梦里不知身是客” 博客,转载请与作者联系!
原文:http://tenfee.blog.51cto.com/6353835/1913951