Programmation par flots 5

Déterminez le résultat du code suivant.

List<Integer> list = List.of("9", "16", "4")
    .stream()
    .map(Integer::parseInt)
    .sorted((a, b) -> Integer.compare(b, a))
    .collect(Collectors.toList());
    
System.out.println(list);

A. [16, 9, 4]

B. [4, 9, 16]

C. Le code produit une erreur

D [9, 16, 4]


Solution

La première opération crée le stream. Ensuite, en utilisant du référençage de méthode, on transforme tous les String en la valeur Integer à laquelle ils correspondent. Ensuite vient l’appel à sorted qui prend en argument un Comparator, ici nous utilisons simplement le comparateur offert par Integer mais avec un petit piège! Les deux arguments donnés à compare sont inversés, ce qui, comme vu en cours, correspond à un comparateur qui inverse l’ordre des int. Les éléments sont donc triés de manière décroissante! Finalement on fait appel à collect pour transformer le stream en liste triée de Integer.

Etant donné qu’on utilise un comparateur inversé, on obtient que la réponse est la A.