首页 > 代码库 > 普林斯顿公开课 算法3-9:Comparator比较器
普林斯顿公开课 算法3-9: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; } } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。