天天看点

treemap反序输出 逆序输出 输出倒数几个值

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