java 对象排序

来源:互联网 发布:lr软件使用教程 编辑:程序博客网 时间:2024/06/11 21:48
java中有很简单的排序处理机制。
简单例子如下:
Package  orderTest;
import  java.util.*;
public class IntegerOrderTest { 
public static void main(String args[]){           
List<Integer> arr=new ArrayList<Integer>();           
arr.add(new  Integer(2));           
arr.add(new  Integer(7));           
arr.add(new  Integer(4));           
System.out.println("Before  order.....");           
for(Integeri:arr)
{   System.out.println(i);  }             
System.out.println("Afterorder.....");           
Collections.sort(arr);           
for(Integer i:arr)
{   System.out.println(i);  }  
}
}           
输出结果:Before order.....274After order.....247            
从所到的结果中,我们可以看到存放在arrInteger类的对象按初始化的int类型进行了从小到大的排序。根据上面的结论我们就可以把各种同一类的对象按我们规定的一个排序,例如我们要把一个Student类按属性age的大小排序后输出。        
package  orderTest;         
public class Student implements Comparable{          
private String name; //学生姓名         
private int age; //学生年龄 
//构造方法           
public Student(String name, int age) {           
this.name = name;  
this.age = age; 
}         
//私有成员变量的外部访问方法         
public int getAge() {  return age; }         
public void setAge(int age) {  this.age = age; }         
public String getName() {  return name; }         
public void setName(String name) {  this.name = name; }         
//重写compareTo方法,规定我们想排序的顺序        
public int compareTo(Object o) {  
return this.age-((Student)o).age; 
}         
//重写toString方法,便于输出        
public String toString(){  return name+" "+age; } 
}       
package orderTest;        
import java.util.*;       
public class StudentOrderTest {        
 public static void main(String[] args) {         
//用一个数组来存放所要排序的对象        
List<Student>students=new ArrayList<Student>();        
 //把各个对象加到数组中去         
students.add(new Student("Jack",20));         
students.add(new Student("Rose",18));         
students.add(new Student("Bill",22));         
students.add(new Student("Tick",10));         
//输出排序前数组中的各个对象          
for(Student s:students){   System.out.println(s.toString());  }  
//利用Collections类的静态方法sort进行排序  
Collections.sort(students);  
//输出排序后数组中的各个对象  
System.out.println("**************");  
for(Student s:students){   System.out.println(s.toString());  } 
}
}  
输出结果:Jack 20Rose 18Bill 22Tick 10**************Tick 10Rose 18Jack 20Bill 22