首页 > 其他 > 详细

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

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

在前几个章节中使用了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比较器

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!