quand utiliser la fonction Identity en Java?

Juan Perez:

Ont été par un code et RAN dans Function.identity () que je l'ai trouvé est similaire à s-> s. Je ne comprends pas pourquoi et quand je devrais utiliser Function.identity ().

J'ai essayé de comprendre en travaillant sur un exemple, mais il n'a pas précisé à mes questions:

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;
    }

Lors de l'impression des éléments de la liste avec et sans carte, je reçois le même résultat:

a
b
c

Alors, quel est le but d'inclure s-> s qui passe une chaîne et la récupération d'une chaîne? quel est le but de Function.identity ()?

S'il vous plaît me donner un meilleur exemple, peut-être cet exemple n'a pas de sens pour prouver l'importance d'utiliser l'identité ().

Merci

JB Nizet:

Il est utile lorsque l'API forces vous de passer une fonction, mais tout ce que vous voulez est de garder la valeur d' origine.

Par exemple, disons que vous avez Stream<Country>et que vous voulez faire le transformer en un Map<String, Country>. Vous utiliserez

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

Collectors.toMap()attend une fonction pour transformer le pays en une clé de la carte, et une autre fonction de la transformer en une valeur de la carte. Puisque vous voulez stocker le pays lui-même en tant que valeur, vous utilisez la fonction d'identité.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=333178&siteId=1
conseillé
Classement