首页 > 代码库 > 集合的排序
集合的排序
对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器。如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()的第二个参数进行排序,另外,如果不想使用默认的分类顺序进行排序,同样也可以传递一个Comparator实例作为参数来进行排序。
package Bible001; import java.util.*; //类通过实现comparable接口进行排序和利用创建比较器进行排序。 public class SortTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub List<Student> list=new ArrayList<Student>(); list.add(new Student("stu001",21)); list.add(new Student("stu003",29)); list.add(new Student("stu002",25)); list.add(new Student("stu004",23)); System.out.println("--------原始顺序---------"); for(Iterator<Student> it=list.iterator();it.hasNext();) System.out.println(it.next().toString()); System.out.println("---------默认排列---------"); Collections.sort(list); for(Iterator<Student> it=list.iterator();it.hasNext();) System.out.println(it.next().toString()); System.out.println("---------降序排列-----"); Comparator<Student> comp=Collections.reverseOrder(); Collections.sort(list,comp); for(Iterator<Student> it=list.iterator();it.hasNext();) System.out.println(it.next().toString()); System.out.println("---------名字排序----------"); Collections.sort(list,new Comparator<Student>(){ @Override public int compare(Student s1, Student s2) { // TODO Auto-generated method stub return s1.getName().compareTo(s2.getName()); } }); for(Iterator<Student> it=list.iterator();it.hasNext();) System.out.println(it.next().toString()); } } class Student implements Comparable<Student>{ private String name; 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; } private int age; public Student(String name,int age){ this.name=name; this.age=age; } @Override public int compareTo(Student stu) { // TODO Auto-generated method stub if(this.age>stu.age) return 1; else if(this.age<stu.age) return -1; else return 0; } public String toString(){ return name+‘_‘+age; } }
输出:
--------原始顺序---------
stu001_21
stu003_29
stu002_25
stu004_23
---------默认排列---------
stu001_21
stu004_23
stu002_25
stu003_29
---------降序排列-----
stu003_29
stu002_25
stu004_23
stu001_21
---------名字排序----------
stu001_21
stu002_25
stu003_29
stu004_23
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。