因为集合ArrayList所存储的值为对象,所以要为ArrayList中的值进行排序,编译器并不知道按照何种方式进行排序。如:
ArrayList<Student> students;
要实现ArrayList的排序功能必须使用实现了Comparator接口的对象,而要排序则使用的 Collections 静态方法sort()
实例如下:
package myText;
/**
* 定义一个学生类
* @author Administrator
*
*/
public class Student {
//属性
private String name;
private int age;
private double mark;
//构造方法
public Student(){}
public Student(String name, int age, double mark) {
super();
this.name = name;
this.age = age;
this.mark = mark;
}
//get、set方法
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 double getMark() {
return mark;
}
public void setMark(double mark) {
this.mark = mark;
}
}
package myText;
import java.util.*;
/**
* 使用定义的学生类创建对象,
* 对这几个对象按成绩排序,
* @author Administrator
*
*/
public class TaxisStudent {
public static void main(String[] args) {
Student wang=new Student("wang",20,100);
Student li=new Student("li",22,110);
Student zhang=new Student("zhang",22,80);
Student zhao=new Student("zhao",22,99);
Student sun=new Student("sun",22,88);
List<Student> students = new ArrayList<Student>();
students.add(wang);
students.add(li);
students.add(zhang);
students.add(zhao);
students.add(sun);
Comparator<Student> comparator=new Comparator<Student>() {
@Override
public int compare(Student stu1, Student stu2) {
if(stu1.getMark()>stu2.getMark()){
return 1;
}else if(stu1.getMark()==stu2.getMark()){
return 0;
}else {
return -1;
}
}
};
Collections.sort(students,comparator);
for(Student stu : students){
System.out.println("学生姓名:"+stu.getName()+"\t学生成绩:"+stu.getMark());
}
}
}
使用Java中的ArrayList给所存对象排序问题
最新推荐文章于 2024-07-31 14:07:23 发布