¿Qué es un parámetro keyExtractor?

campos bhashwara pra:

Estoy aprendiendo la Comparatorinterfaz y estoy confundido con él es estática Comparator.comparing()método. Acerca de Comparator.comparing()los parámetros del método y cómo se puede utilizar referencias de métodos. Cuando miraba a la documentación dice que que tiene un "parámetro keyExtractor". ¿Puede explicar lo que me está confundiendo?

repollo:

A partir de la documentación de Comparator#comparing(Function):

Acepta una función que extrae una Comparableclave de selección de un tipo T, y devuelve una Comparator<T>que compara por que clave de ordenación.

Es así que se puede comparar objetos basado en una propiedad de esos objetos. La misma documentación da un ejemplo:

API Nota:

Por ejemplo, para obtener una Comparatorque compara Personobjetos por su apellido,

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

Cuando tu lo hagas:

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

El extractor clave dada extraerá los últimos valores de nombre de cada uno Personcon el fin de comparar esos valores en lugar de los Personobjetos "directamente". Si la clave no es Comparableentonces usted puede utilizar la sobrecarga que le permite especificar una Comparatorpara la comparación de los valores clave extraídos.


Lo anterior byLastNamede comparación sería lo mismo que:

public class ByLastNameComparator implements Comparator<Person> {

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

Cuando las llamadas a p1.getLastName()y p2.getLastName()serían la clave extractor de Functionaplicación.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=283875&siteId=1
Recomendado
Clasificación