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接口可以根据个人需要重新实现。