ArrayList用compareTo给对象排序
对ArrayList中对象按照该对象某属性排序,基本都是两种方法:
(1)实现Comparable接口,重写compareTo方法;
(2)实例化一个Comparator比较器;
网上查到的基本都是用Comparator比较器实现的,这里写一下用实现Comparable接口的方式。
Student类:
package com.test;
public class Student implements Comparable<Student>{
int age;
int id;
String gender;
String name;
String cs;
Student(int id,String name,String gender,int age,String cs)
{
this.age=age;
this.name=name;
this.gender=gender;
this.id=id;
this.cs=cs;
}
public String toString(){
return id+" "+name+" "+gender+" "+age+" "+cs;
}
@Override
public int compareTo(Student s2) {
if(this.age!=s2.age){
return this.age-s2.age;
}
else{
//年龄相同则按姓名排序
if(!this.name.equals(s2.name)){
return this.name.compareTo(s2.name);
}
else{
//姓名也相同则按学号排序
return this.id-s2.id;
}
}
}
}
Main:
package com.test;
import java.util.ArrayList;
import java.util.Collections;
public class ArrayListSortTest {
public static void main(String[] args) {
Student stu1 = new Student (1,"Bob","male",23,"cs");
Student stu2 = new Student (2,"Lucy","female",19,"cs");
Student stu3 = new Student (3,"James","male",22,"cs");
Student stu4 = new Student (4,"Anna","female",17,"cs");
Student stu5 = new Student (5,"Alexius","male",22,"cs");
ArrayList<Student> list = new ArrayList<Student>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(stu5);
//排序
Collections.sort(list);
display(list);
}
static void display(ArrayList<Student> list){
for(Student s : list)
System.out.println(s);
}
}