cuándo utilizar la función de identidad en Java?

Juan Perez :

Han sido a través de un código y se topó con Function.identity () que he encontrado es similar a s-> s. No entiendo por qué y cuándo debo utilizar Function.identity ().

He tratado de entender por trabajar en un ejemplo, pero no aclararon mis preguntas:

public static void main(String[] args){
        Arrays.asList("a", "b", "c")
          .stream()
          .map(Function.identity())
          //.map(str -> str)   //it is the same as identity()       
          .forEach(System.out::println);
        return;
    }

Al imprimir los elementos de la lista con y sin asignación, estoy consiguiendo el mismo resultado:

a
b
c

Así que, ¿cuál es el propósito de incluir s-> s que está pasando una cadena y la recuperación de una cadena? ¿cuál es el propósito de Function.identity ()?

Por favor me proporcione un mejor ejemplo, puede que este ejemplo no tiene sentido para demostrar la importancia de utilizar la identidad ().

Gracias

JB Nizet:

Es útil cuando las API fuerzas que usted pase una función, pero todo lo que desea es mantener el valor original.

Por ejemplo, digamos que usted tiene una Stream<Country>, y que quieren hacer lo convierten en una Map<String, Country>. Se podría utilizar

stream.collect(Collectors.toMap(Country::getIsoCode, Function.identity()))

Collectors.toMap()espera una función para convertir al país en una clave del mapa, y otra función para convertirlo en un valor del mapa. Puesto que desea almacenar el propio país como valor, se utiliza la función identidad.

Supongo que te gusta

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