首先综述一下使用Comparator接口完成自定义类比较的步骤:
1.我们需要自定义一个比较类去实现Comparator接口,然后实现Comparator接口中的Compare方法。
2.调用Collections接口中的sort方法,将需要排序的集合和比较类的对象作为参数,传入sort方法中。
下面是自己自定义的猫类,实现对猫类按姓名的升序排列
package cn.hpu.sort;
public class Cat {
private String name;
private int month;
private String species;
//构造方法
public Cat() {
}
public Cat(String name,int month,String species) {
this.setName(name);
this.setMonth(month);
this.setSpecies(species);
}
//对应属性的get和set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month=month;
}
public String getSpecies() {
return species;
}
public void setSpecies(String species) {
this.species=species;
}
@Override
public String toString() {
return "Cat [姓名=" + name + ", 年龄=" + month + ", 品种=" + species + "]";
}
}
定义一个比较类,去实现Comparator接口,实现其中的compare方法
package cn.hpu.sort;
import java.util.Comparator;
public class NameComparator implements Comparator<Cat> {
public int compare(Cat cat1,Cat cat2) {
String name1=cat1.getName();
String name2=cat2.getName();
int result=name1.compareTo(name2);
return result;
}
}
定义一个测试类,查看排序后的结果
package cn.hpu.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CatTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat huahua=new Cat("huahua",6,"英国短毛猫");
Cat miumiu=new Cat("amiumiu",5,"中华田园猫");
Cat xixi=new Cat("xixi",8,"中华田园猫");
List<Cat> catList=new ArrayList<Cat>();
catList.add(huahua);
catList.add(miumiu);
catList.add(xixi);
//打印排序之前的集合元素
System.out.println("按名字进行排序之前的:");
for(Cat cat:catList) {
System.out.println(cat.toString());
}
Collections.sort(catList, new NameComparator());
System.out.println("按名字进行排序之后的:");
for(Cat cat:catList) {
System.out.println(cat.toString());
}
}
}
在完成掌握如何进行排序的基础上,更要理解比较类实现了Comparator接口,然后如何去实现接口中的compare方法的。
compare方法的实现无非就是传入两个对象作为参数,然后注意此方法的返回的参数。