Java的Collection.sort()方法
Java中的Collection.sort()方法能使用泛型对对象的变量进行排序,下面是两种方法。
文件名:student.java
import java.util.*; import com.sun.org.apache.xerces.internal.dom.ProcessingInstructionImpl; import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections; public class Student implements Comparable<Student>{ private int id; private String name; public Student(String setname,int id) { this.id=id; this.name=setname; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int compareTo(Student stu) { /* 重写compareTo方法1 Compare排序接口 * id升序排序 if(this.id>stu.id) { return 1; } else if (this.id<stu.id) { return -1; } else { return 0; } 或者return this.getId-stu.getId; */ //名字升序排序 return this.getName().compareTo(stu.getName()); } }
这个文件主要是定义一个学生类,如果使用Compare排序接口算法,就要在实体类中重写compare方法,能实现对name和id进行升序和降序排序。
文件名:drive.java
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class drive { public static void main(String[] args){ ArrayList<Student> studentlist=new ArrayList<Student>(); Student stu1 = new Student("zhangsan",12); Student stu2 = new Student("lisi",4); Student stu3 = new Student("wangwu", 5); studentlist.add(stu1); studentlist.add(stu2); studentlist.add(stu3); Collections.sort(studentlist); System.out.println(studentlist.get(0).getName()); System.out.println(studentlist.get(1).getName()); System.out.println(studentlist.get(2).getName()); //方法2,compare比较器接口 ArrayList<Student> studentlist2=new ArrayList<Student>(); Student stu4=new Student("Tom", 13); Student stu5=new Student("Susan", 4); Student stu6=new Student("Puse", 41); studentlist2.add(stu4); studentlist2.add(stu5); studentlist2.add(stu6); Collections.sort(studentlist2, new Comparator<Student>() { public int compare(Student a,Student b) { //return a.getId()-b.getId();升序排序 //降序排序 return b.getId()-a.getId(); } }); System.out.println(studentlist2.get(0).getId()); System.out.println(studentlist2.get(1).getId()); System.out.println(studentlist2.get(2).getId()); } }
这里使用了方法2的compare比较器接口,可以在main函数中进行排序,运行结果如下
如图,实现了排序