创建一个实体类:
package cn.com.comparator;
public class Students
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
Comparator实现对象比较
package cn.com.comparator;
import java.util.Comparator;
public class StudentComparator implements Comparator
{
public int compare(Object o1, Object o2)
{
int result=0;
if(o1!=null&&o2!=null&&o1 instanceof Students && o2 instanceof Students)
{
Students stu1=(Students)o1;
Students stu2=(Students)o2;
result=stu1.getAge()-stu2.getAge();
}
else
{
RuntimeException e=new RuntimeException("对象不存在或者不是Students的类型");
throw e;
}
return result;
}
}
Comparable实现对象比较:
package cn.com.comparator;
public class StudentComparable implements Comparable
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public int compareTo(Object o)
{
int result=0;
if(o!=null&&o instanceof StudentComparable)
{
StudentComparable student=(StudentComparable)o;
result=this.age-student.age;
}
else
{
RuntimeException e=new RuntimeException("对象不能为空或者不是StudentComparable类型");
throw e;
}
return result;
}
}
编写测试类:
package cn.com.comparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
public class StudentTest
{
public static void test()
{
List<Students> stuList=new ArrayList<Students>();
//List<StudentComparable> stuList2=new ArrayList<StudentComparable>();
Random ran=new Random();
for(int i=0;i<10;i++)
{
Students stu=new Students();
stu.setName("name:"+i);
stu.setAge(ran.nextInt(35));
stuList.add(stu);
}
Comparator stuComparator=new StudentComparator();
Collections.sort(stuList,stuComparator);
//Collections.reverse(stuList);反转顺序,逆转输出
//Comparable stuComparable=new StudentComparable();
//Collections.sort(stuList2);
for(Students stu:stuList)
{
System.out.println(stu.getName()+": "+stu.getAge());
}
}
public static void main(String[] args)
{
test();
}
}