一、实现一个类的对象直接比较大小
1.前提
(1)类必须实现Compareble接口
(2)且重写compareTo()方法,自定义比较规则
2.重写compareTo()方法
//重写方法,定义学生对象的比较规则
//比较规则:按学号比,学号小的同学往前排
//比较对象:当前学生对象(this)和Object o
public int compareTo(Object o) {
// TODO Auto-generated method stub
Student student=(Student)o;
if(this.getNo()==student.getNo()){
return 0; //学号相同,两个学生对象一般大
}else if(this.getNo()>student.getNo()){
return 1; //当前学生对象学号大于比较学生对象学号
}else {
return -1; //当前学生对象学号小于比较学生对象学号
}
}
3.调用Collections的sort犯法进行排序
//使用Collections对集合进行升序排列
Collections.sort(list);
for (Student student : list) {
System.out.println(student.getNo()+"-"+student.getName()+"-"+student.getSex());
}
二、实例代码
Student类
package collections_31;
//学生类型:学号,姓名和性别
public class Student implements Comparable{
private int no;
private String name;
private String sex;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int no, String name, String sex) {
super();
this.no = no;
this.name = name;
this.sex = sex;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
//重写方法,定义学生对象的比较规则
//比较规则:按学号比,学号小的同学往前排
//比较对象:当前学生对象(this)和Object o
public int compareTo(Object o) {
// TODO Auto-generated method stub
Student student=(Student)o;
if(this.getNo()==student.getNo()){
return 0; //学号相同,两个学生对象一般大
}else if(this.getNo()>student.getNo()){
return 1; //当前学生对象学号大于比较学生对象学号
}else {
return -1; //当前学生对象学号小于比较学生对象学号
}
}
}
录入数据并排序
package collections_31;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//Collections的排序
public class CollectionsUseDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Student> list=new ArrayList<Student>();
Student student1=new Student(1,"张三","男");
Student student2=new Student(7,"王五","男");
Student student3=new Student(3,"王小花","女");
Student student4=new Student(9,"刘悦","女");
list.add(student1);
list.add(student2);
list.add(student3);
list.add(student4);
System.out.println("=============================");
for (Student student : list) {
System.out.println(student.getNo()+"-"+student.getName()+"-"+student.getSex());
}
System.out.println("=============================");
//使用Collections对集合进行升序排列
Collections.sort(list);
for (Student student : list) {
System.out.println(student.getNo()+"-"+student.getName()+"-"+student.getSex());
}
}
}
排序结果