TreeMap

TreeMap的使用和底层实现_Comparable接口

Posted by Ruizhi Ma on June 30, 2019

TreeMap类

package cn.sxt.collection;

import java.util.Map;
import java.util.TreeMap;

/**
 * 测试TreeMap的使用
 * @author Administrator
 *
 */
public class TestTreeMap {
	public static void main(String[] args) {
		Map<Integer,String>  treemap1 = new TreeMap<>();
		treemap1.put(20, "aa");
		treemap1.put(3, "bb");
		treemap1.put(6, "cc");
		
		//按照key递增的方式排序
		for(Integer  key:treemap1.keySet()){
			System.out.println(key+"---"+treemap1.get(key)); 
		}
		
		
		Map<Emp,String>  treemap2 = new TreeMap<>();
		treemap2.put(new Emp(100,"张三",50000), "张三是一个好小伙");
		treemap2.put(new Emp(200,"李四",5000), "李四工作不积极");
		treemap2.put(new Emp(150,"王五",6000), "王五工作还不错");
		treemap2.put(new Emp(50,"赵六",6000), "赵六是个开心果");
		
		//按照key递增的方式排序
		for(Emp  key:treemap2.keySet()){
			System.out.println(key+"---"+treemap2.get(key)); 
		}		
		
	}
}

class Emp  implements Comparable<Emp>  {
	int id;
	String name;
	double salary;
	
	public Emp(int id, String name, double salary) {
		super();
		this.id = id;
		this.name = name;
		this.salary = salary;
	}

	@Override
	public String toString() {
		return  "id:"+id+",name:"+name+",salary:"+salary;
	}
	
	@Override
	public int compareTo(Emp o) {		//负数:小于,0:等于,正数:大于
		
		if(this.salary>o.salary){
			return 1;
		}else if(this.salary<o.salary){
			return -1;
		}else{
			if(this.id>o.id){
				return 1;
			}else if(this.id<o.id){
				return -1;
			}else{
				return 0;
			}
		}
		
	}
	
}



运行结果:

3—bb
6—cc
20—aa
id:200,name:李四,salary:5000.0—李四工作不积极
id:50,name:赵六,salary:6000.0—赵六是个开心果
id:150,name:王五,salary:6000.0—王五工作还不错
id:100,name:张三,salary:50000.0—张三是一个好小伙

小总结

HashMap和TreeMap的不同,就是HashMap内部没有排序,而TreeMap实现了Comparable接口,内部按照一定的规则排序了。


0 comments
Anonymous
Error: Bad credentials.
Markdown is supported

Be the first person to leave a comment!