java - 在单个对象上使用自定义比较器

标签 java comparator

我创建了一个自定义比较器,并且我知道如何使用 collections.sort,但是我想知道如何仅使用两个对象来使用它。

所以在我的个人类中,比较器代码如下所示

//Default comparator by score
    @Override
public int compareTo(Person p)
{
   return Double.compare(p.score, score);
}
//Custom comparator by name
static Comparator<Person> nameComparator() 
{
    return (Person o1, Person o2) -> o1.getName().compareToIgnoreCase(o2.getName());       
}  

使用默认比较器很好,但我如何使用自定义比较器 像这样的东西

//Default
int result = p.compareTo(p4);

//Not sure how to use this one
int result2 = p.compareTo(nameComparator(p4));

p 和 p4 是 person 对象

最佳答案

Comparator<Person>是一个具有方法 compare(Person, Person) 的类方法就可以了。

因此,只需调用此方法,并将两个实例作为参数传递即可:

int result2 = nameComparator().compare(p, p4);

请注意,您也可以使用 natural ordering comparator 执行“默认”示例。 :

int result = Comparator.naturalOrder().compare(p, p4);

这与 p.compare(p4) 相同.

关于java - 在单个对象上使用自定义比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43545799/

相关文章:

Java unicode 问题

java - 毫秒到天

java - 在人民之间平分价格的公式

java - 如何创建自定义比较器来对编号系统进行排序

java - 如何从 java 中的大 csv 文件中随机读取整行(包括可能的换行符)

Java Do While 语句在 Try Catch 语句之后无限循环

java - 使用 Comparable 和 Comparator 比较泛型类型

java - 通过 int 字段的降序对列表进行排序,如果 int 字段相等则按字典顺序排序

c++ - 添加自定义比较器时无法插入要设置的新元素

java - 按日期比较对象(实现 Comparator)