TreeSet 和 TreeMap 可以实现对对象的排序
使用重写comparable接口方式
import java.util.TreeMap;
import java.util.TreeSet;
import org.omg.CORBA.PUBLIC_MEMBER;
/**
* TreeSet实现排序,此为实现comparable接口来进行比较
* 如果重写的compareTo方法中比较的变量相等,则只存储第一个进入TreeSet/TreeMap的对象
* TreeMap实现按照键值对中的key进行comparable规则排序
* @author 袁盛桐
*/
public class TreeSetComparable implements Comparable<TreeSetComparable> {
//为了避免进入TreeSet后的对象值被修改,使用final
public final String Name;
public final int Age;
public TreeSetComparable(String name, int age) {
super();
Name = name;
Age = age;
}
@Override
public String toString() {
return "Name:"+Name+",Age:"+Age;
}
@Override
public int compareTo(TreeSetComparable o) {
return this.Age>o.Age?1:(this.Age==o.Age?0:-1);
}
public static void main(String[] args) {
TreeSetComparable a = new TreeSetComparable("a",10);
TreeSetComparable b = new TreeSetComparable("b",20);
TreeSetComparable c = new TreeSetComparable("c",6);
TreeSetComparable d = new TreeSetComparable("d",6);
//c和d的Age相同,所以只存入c
TreeSet<TreeSetComparable> demo = new TreeSet<TreeSetComparable>();
demo.add(a);
demo.add(b);
demo.add(c);
demo.add(d);
System.out.println(demo);
TreeMap<TreeSetComparable,String> demo2 = new TreeMap<TreeSetComparable, String>();
demo2.put(a,"a");
demo2.put(b,"b");
demo2.put(c,"c");
demo2.put(d,"d");
System.out.println(demo2);
}
}
使用给TreeSet传入comparator匿名排序逻辑类方式
import java.util.Comparator;
import java.util.TreeSet;
/**
* 使用一个匿名comparator类来时先业务排序逻辑传入TreeSet
* @author 袁盛桐
*
*/
public class TreeSetMapComparator {
//为了避免进入TreeSet后的对象值被修改,使用final
public final String Name;
public final int Age;
public TreeSetMapComparator() {
super();
this.Name = null;
this.Age = 0;
}
public TreeSetMapComparator(String name, int age) {
super();
Name = name;
Age = age;
}
@Override
public String toString() {
return "Name:"+Name+",Age:"+Age;
}
public static void main(String[] args) {
TreeSet<TreeSetMapComparator> demo = new TreeSet<TreeSetMapComparator>(
new Comparator<TreeSetMapComparator>() {
@Override
public int compare(TreeSetMapComparator o1,TreeSetMapComparator o2) {
return o1.Age>o2.Age?1:(o1.Age==o2.Age?0:-1);
}
}
);
demo.add(new TreeSetMapComparator("aa",10));
demo.add(new TreeSetMapComparator("bb",20));
demo.add(new TreeSetMapComparator("cc",8));
System.out.println(demo);
}
}