自定义比较器在单个对象上的使用
custom comparator use on single object
我已经创建了一个自定义比较器并且我知道如何使用 collections.sort 但是我想知道如何只对两个对象使用它。
所以在我看来 class 比较器代码看起来像这样
//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 是人物对象
Comparator<Person>
是一个 class,上面有一个方法 compare(Person, Person)
。
因此,只需调用此方法,将您的两个实例作为参数传递:
int result2 = nameComparator().compare(p, p4);
请注意,您也可以使用 natural ordering comparator:
来执行 "default" 示例
int result = Comparator.naturalOrder().compare(p, p4);
这与 p.compare(p4)
相同。
我已经创建了一个自定义比较器并且我知道如何使用 collections.sort 但是我想知道如何只对两个对象使用它。
所以在我看来 class 比较器代码看起来像这样
//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 是人物对象
Comparator<Person>
是一个 class,上面有一个方法 compare(Person, Person)
。
因此,只需调用此方法,将您的两个实例作为参数传递:
int result2 = nameComparator().compare(p, p4);
请注意,您也可以使用 natural ordering comparator:
来执行 "default" 示例int result = Comparator.naturalOrder().compare(p, p4);
这与 p.compare(p4)
相同。