dosent了解排序是如何运作的

时间:2016-05-07 16:43:18

标签: java sorting collections comparable

我试图理解可比较的compareTo方法如何对输入进行排序。以下是实施的compareTo方法:

@Override
public int compareTo(Name n) {
    int lastCmp = lastName.compareTo(n.lastName);
    return (lastCmp != 0 ? lastCmp : firstName.compareTo(n.firstName));
}

Collections.sort方法的输入数组是:

Name nameArray[] = {
    new Name("John","Smith"),
    new Name("Karl","Ng"),
    new Name("Jeff","Smith"),
    new Name("Tom","Rich")
};
List<Name> names = Arrays.asList(nameArray);
Collections.sort(names);

我不明白compareTo方法的值是什么。 (n.lastName和lastname)的顺序是什么?

1 个答案:

答案 0 :(得分:1)

Collections.sort()方法根据集合的长度和类型使用不同的算法进行排序(我认为......)

如果对象分别小于,等于或大于,则compareTo方法应返回负数,0或正数。 lastName变量引用Name类中的Last Name,由firstName:String和lastName:String组成。

该方法首先将lastName(String类型的对象)与传递的对象的lastName进行比较&#34; n&#34; (名称类型)。如果它不同于0(意思是不相等)则返回该值。如果它相等,则比较第一个名称并返回该名称。

所以它只是比较两个字符串(Name对象的firstName和lastName)。