天天看點

Collections的方法練習(2)實作一個排序

一、實作一個類的對象直接比較大小

1.前提

(1)類必須實作Compareble接口

(2)且重寫compareTo()方法,自定義比較規則

Collections的方法練習(2)實作一個排序

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());
    }
  }

}