码迷,mamicode.com
首页 > 其他好文 > 详细

普林斯顿公开课 算法3-9:Comparator比较器

时间:2014-06-08 15:37:08      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:java   排序   comparator   

在前几个章节中使用了Comparable作为比较函数。比如对于字符串,就是按字母表的顺序进行排序。有时候想要换一种比较方式,该怎么实现呢?


在Java中可以使用Comparator比较器,以下代码展示了字符串之间不同的比较方式。


String[] a;
...
Arrays.sort();
...
Arrays.sort(a, String.CASE_INSENSITIVE_ORDER);
Arrays.sort(a, Collator.getInstance(new Locale("es"));
Arrays.sort(a, new BritishPhoneBookOrder());



Comparator的实现方式就是继承Comparator类,然后重载compare方法即可。


有时候在实现一个类的时候,可以提供多种比较方法,比如一个学生对象,可以按照名字来排序,也可以按照年级来排序。所以代码可以写成这样:

public class Student {
    public static final Comparator<Student> BY_NAME = new ByName();
    public static final Comparator<Student> BY_SECTION = new BySection();
 
    private final String name;
    private final int section;
 
    private static class ByName implements Comparator<Student> {
        public int compare(Student a, Student b)  {
            return a.name.compareTo(b.name);
        }
    }
 
    private static class BySection implements Comparator<Student> {
        public int compare(Student a, Student b) {
            return a.section - b.section;
        }
    }
}



普林斯顿公开课 算法3-9:Comparator比较器,布布扣,bubuko.com

普林斯顿公开课 算法3-9:Comparator比较器

标签:java   排序   comparator   

原文地址:http://blog.csdn.net/caipeichao2/article/details/28899553

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!