TreeMap使用

TreeMap类不仅实现了Map接口,还实现了Map接口的子接口java.util.SortedMap。由TreeMap类实现的Map集合,不允许键对象为null,因为集合中的映射关系是根据键对象按照一定顺序排列的,TreeMap类通
 

使用TreeMap类
TreeMap 类不仅实现了Map接口,还实现了Map接口的子接口java.util.SortedMap。由TreeMap类实现的Map集合,不允许键对象为 null(注意和HashMap的区别),因为集合中的映射关系是根据键对象按照一定顺序排列的,TreeMap类通过实现SortedMap接口得到的方法如下所示。

方法名称  功能简介
comparator()  获得对该集合采用的比较器,返回值为Comparator类型,如果未采用任何比较器则返回null
firstKey()返回在集合中的排序位于第一位的键对象
lastKey()   返回在集合中的排序位于最后一位的键对象
headMap(K toKey)    截取在集合中的排序位于键对象toKey(不包含)之前的所有映射关系,重新生成一个SortedMap集合并返 回
subMap(K fromKey, K toKey)截取在集合中的排序位于键对象fromKey(包含)和toKey(不包含)之间的所有映射关系, 重新生成一个SortedMapJ集合并返回
tailMap(K fromKey) 截取在集合中的排序位于键对象fromKey(包含)之后的所有映射关系,重新生成一个SortedMap集合并返回

       在添加、删除和定位映射关系上,TreeMap类要比HashMap类的性能差一些,但是其中的映射关系具有一定的顺序,如果不需要一个有序的集合,则建议 使用HashMap类;如果需要进行有序的遍历输出,则建议使用TreeMap类,在这种情况下,可以先使用由HashMap类实现的Map集合,在需要 顺序输出时,再利用现有的HashMap类的实例,创建一个具有完全相同映射关系的TreeMap类型的实例,例如下面的例子。

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class CallBackTest2 
{
	public static void main(String[] args) 
	{ 
		Map<Integer, String> hashmap = new HashMap<Integer, String>();  
		hashmap.put(56,"张三56");  
		hashmap.put(88,"小白88");  
		hashmap.put(75,"小黑75");  
		hashmap.put(66,"小兰66");  
		hashmap.put(98,"小锋98"); 
		Set<Integer> keySet = hashmap.keySet(); 
		System.out.println("HashMap全部的成绩为 :" + keySet);  
		System.out.print("HashMap学生信息 :"); 
		for (Integer key : keySet ) 
		{    
			System.out.print(hashmap.get(key)+" ");    
		}
		System.out.println();
//		Map<Integer, String> treemap = new TreeMap<Integer, String>(Collections.reverseOrder());
		Map<Integer, String> treemap = new TreeMap<Integer, String>(new Comparator(){//不指定参数默认为升序

			@Override//定义降叙排列
			public int compare(Object o1, Object o2) {
				if ((int)o1 > (int)o2){
					return -1;
				}
				else if ((int)o1 < (int)o2){
					return 1;
				}
				return 0;
			}
			
			
	<span style="color:#ff0000;">		//定义升叙排列
//			public int compare(Object o1, Object o2) {
//				if ((int)o1 < (int)o2){
//					return -1;
//				}
//				else if ((int)o1 > (int)o2){
//					return 1;
//				}
//				return 0;
//			}
</span>			
		});
		treemap.putAll(hashmap);
		keySet = treemap.keySet(); 
		//得到key set  
		System.out.println("TreeMap全部的成绩为 :" + keySet);  
		System.out.print("TreeMap学生信息 :");  
		for (Integer key : keySet ) 
		{    
			System.out.print(treemap.get(key)+" ");    
		}
		
	}
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值