自定义比较器用于单个对象

时间:2017-04-21 14:53:05

标签: 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是人物对象

1 个答案:

答案 0 :(得分:1)

Comparator<Person>是一个有方法compare(Person, Person)方法的类。

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

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

请注意,您也可以使用natural ordering comparator

执行“默认”示例
int result = Comparator.naturalOrder().compare(p, p4);

这与p.compare(p4)相同。