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的反序输出,逆序输出,输出倒数几行等.
转载于:https://blog.51cto.com/tenfee/1913951