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

6.2.2 Comparator接口

时间:2020-05-29 09:19:19      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:java   nts   字典顺序   array   对象数组   数组排序   new   sort   而不是   

对一个对象数组排序(Array.sort()),前提是这些对象是实现了Comparable接口的类的实例

可以对一个字符串数组进行排序
因为String类实现了Comparable<String>
而且String.compareTo方法可以按字典顺序比较字符串

假设我们希望按长度递增的顺序 对字符串进行排序,而不是按字典顺序

Array.sort()方法还有第二个版本:
有一个数组和一个比较器(comparator)作为参数

比较器是实现了Comparator接口的实例
Comparator接口

public interface Comparator<T>
{
      int compare(T first,T second);
}

要按长度比较字符串, 可以如下定义一个实现Comparator<String>接口的类(比较器)

class LengthComparator implements Comparator<String>
{
    public int compare(String first,String second){
        return first.length()-second.length();
    }
}

具体完成比较时,需要建立一个实例

Comparator<String> comp = new LengthComparator();
if(comp.compare(word[i],word[j]) > 0)....

将这个调用与word[i].compareTo(word[j])作比较:
compare方法要在比较器对象上调用,而不是在字符串本身上调用

按长度递增的顺序 对字符串进行排序
需要为Array.sort()方法传入一个LengthComparator对象

String[] friends = {"Peter","Paul","Mary"};
Array.sort(friends, new LengthComparator());

使用Lambda表达式 可以更容易的使用Comparator

6.2.2 Comparator接口

标签:java   nts   字典顺序   array   对象数组   数组排序   new   sort   而不是   

原文地址:https://www.cnblogs.com/vneo/p/12985387.html

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