Comparator类型的排序:
package haohaoxuexi;
import java.util.Comparator;
import java.util.TreeSet;
public class lianxi09 {
public static void main(String[] args) {
//建立实例,进行实验
lianxi08 p1=new lianxi08("易学习",100);
lianxi08 p2=new lianxi08("侯亮平",1000);
lianxi08 p3=new lianxi08("高小琴",1200);
lianxi08 p4=new lianxi08("李达康",50);
//利用TreeSet容器进行数据排序
//这里用的是java.util.Comparator的方法,定义一个排序的标准,从而实现排序
TreeSet<lianxi08> persons=new TreeSet<lianxi08>(
new Comparator<lianxi08>(){
@Override
public int compare(lianxi08 o1, lianxi08 o2) {
return -(o1.getHandsome()-o2.getHandsome());
}
});
//将定义好的类实例加入到定义好的TreeSet容器中
persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(p4);
System.out.println(persons);
//这里的排序是直接按顺序放进定义好的容器中,而非将写好的容器中的内容进行排序,数据更改之后不会影响顺序,但之后更改可能会引起数据的重复,故一般状况下,不要修改数据。
}
}
package haohaoxuexi;
public class lianxi08 {
//定义一个类,进行操作,设置私有属性
private String nameString;
private int handsome;
//定义无参构造器
public lianxi08() {
}
//设置setter和getter方法进行该类属性的操作
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getHandsome() {
return handsome;
}
public void setHandsome(int handsome) {
this.handsome = handsome;
}
public lianxi08(String nameString, int handsome) {
super();
this.nameString = nameString;
this.handsome = handsome;
}
//重写toString方法实现格式化输出
@Override
public String toString() {
return "姓名:"+this.nameString+",帅气指数:"+this.handsome+"
";
}
}
Comparable类型的排序:
package haohaoxuexi;
import java.util.TreeSet;
public class lianxi11 {
public static void main(String[] args) {
//定义类的实例
linaxi10 w1=new linaxi10("垃圾回收员",12000);
linaxi10 w2=new linaxi10("农民工",8000);
linaxi10 w3=new linaxi10("程序员",4000);
//定义一个TreeSet容器
TreeSet<linaxi10> employees=new TreeSet<linaxi10>();
//将实例加入到TreeSet容器中
employees.add(w1);
employees.add(w2);
employees.add(w3);
//进行输出
System.out.println(employees);
//此处的定义与之前的方法一样,不要进行数据的修改
}
}
package haohaoxuexi;
//通过利用java.lang.Comparable中的排序方法实习排序
public class linaxi10 implements java.lang.Comparable<linaxi10>{
//定义私有属性
private String typeString;
private double salary;
//重写compareTo方法实现排序格式的定义
@Override
public int compareTo(linaxi10 o) {
return this.salary>o.salary?1:(this.salary==o.salary?0:-1);
}
//设置无参构造器
public linaxi10() {
super();
// TODO Auto-generated constructor stub
}
//设置setter和getter方法
public String getTypeString() {
return typeString;
}
public void setTypeString(String typeString) {
this.typeString = typeString;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public linaxi10(String typeString, double salary) {
super();
this.typeString = typeString;
this.salary = salary;
}
//重写toString定义输出格式
@Override
public String toString() {
return "工种:"+this.typeString+",工资:"+this.salary+"
";
}
}