TreeSet

TreeSet基本用法,重写Comparable接口

Posted by Ruizhi Ma on July 9, 2019

TestTreeSet类

package cn.sxt.collection;

/*
 * 测试TreeSet的使用
 * 测试Comparable接口
 */
import java.util.Set;
import java.util.TreeSet;

public class TestTreeSet {

	public static void main(String[] args) {
		Set<Integer> set = new TreeSet<>();
		
		set.add(300);
		set.add(200);
		set.add(400);
		
		//元素按照递增输出
		for(Integer s: set){
			System.out.println(s);
		}
		
		Set<Emp2> set2 = new TreeSet<Emp2>();
		set2.add(new Emp2(100, "张三", 1000));
		set2.add(new Emp2(200, "王五", 3000));
		set2.add(new Emp2(300, "赵六", 4000));
		
		for(Emp2 e: set2){
			System.out.println(e);
		}
	}

}

class Emp2  implements Comparable<Emp2>  {
	int id;
	String name;
	double salary;
	
	public Emp2(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(Emp2 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;
			}
		}
		
	}
	
}

运行结果:

200
300
400
id:100,name:张三,salary:1000.0
id:200,name:王五,salary:3000.0
id:300,name:赵六,salary:4000.0

总结

TreeSet就是一个简化的TreeMap,可以对传入的值进行比较,因为内部实现了Comparable接口,同时该Comparable接口可以根据个人需要重新实现。