我试图理解可比较的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)的顺序是什么?
答案 0 :(得分:1)
Collections.sort()方法根据集合的长度和类型使用不同的算法进行排序(我认为......)
如果对象分别小于,等于或大于,则compareTo方法应返回负数,0或正数。 lastName变量引用Name类中的Last Name,由firstName:String和lastName:String组成。
该方法首先将lastName(String类型的对象)与传递的对象的lastName进行比较&#34; n&#34; (名称类型)。如果它不同于0(意思是不相等)则返回该值。如果它相等,则比较第一个名称并返回该名称。
所以它只是比较两个字符串(Name对象的firstName和lastName)。