什么是 keyExtractor 参数

2024-04-08

我正在学习Comparator界面,我对它的静态感到困惑Comparator.comparing()方法。关于Comparator.comparing()方法的参数以及它如何使用方法引用。当我查看文档时,它说它有一个“keyExtractor 参数”。你能解释一下是什么让我困惑吗?


从文档Comparator#comparing(Function) https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Comparator.html#comparing(java.util.function.Function):

接受一个提取a的函数Comparable从类型中排序键T,并返回一个Comparator<T>通过该排序键进行比较。

这样您就可以根据对象的属性来比较对象。同一文档给出了一个例子:

API注意事项:

例如,要获得Comparator比较Person对象按姓氏命名,

Comparator<Person> byLastName = Comparator.comparing(Person::getLastName);

当你这样做时:

Person p1 = ...;
Person p2 = ...;
int result = byLastName.compare(p1, p2);

给定的密​​钥提取器将从每个密钥中提取姓氏值Person为了比较这些值而不是Person“直接”对象。如果钥匙不是Comparable那么你可以使用超载 https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/util/Comparator.html#comparing(java.util.function.Function,java.util.Comparator)它可以让你指定一个Comparator用于比较提取的关键值。


以上byLastName比较器将与以下相同:

public class ByLastNameComparator implements Comparator<Person> {

  @Override
  public int compare(Person p1, Person p2) {
    return p1.getLastName().compareTo(p2.getLastName());
  }
}

电话打往哪里p1.getLastName() and p2.getLastName()将是密钥提取器Function执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 keyExtractor 参数 的相关文章

随机推荐