Adloun

programmation Java (école d'ingénieur) · Chapitre 13 · Exercice de TD

Des lambdas aux références

Lambdas et streams · niveau 1 (application)

Énoncé

Réécrire chaque lambda sous forme de référence de méthode, en précisant de quelle sorte de référence il s'agit, puis exécuter le programme sur la liste ["ada", "Hugo", "lina", "Zoé"].


noms.sort((a, b) -> a.compareToIgnoreCase(b));
noms.replaceAll(s -> s.toUpperCase());
noms.forEach(s -> System.out.println(s));
List<Integer> l = List.of("4", "15", "8").stream().map(s -> Integer.parseInt(s))
        .collect(Collectors.toList());

Corrigé


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Exo2Reecrire {
    public static void main(String[] args) {
        List<String> noms = new ArrayList<>(List.of("ada", "Hugo", "lina", "Zoé"));
        noms.sort(String::compareToIgnoreCase);        // (a, b) -> a.compareToIgnoreCase(b)
        System.out.println(noms);
        noms.replaceAll(String::toUpperCase);         // s -> s.toUpperCase()
        noms.forEach(System.out::println);            // s -> System.out.println(s)
        List<Integer> l = List.of("4", "15", "8").stream().map(Integer::parseInt)
                .collect(Collectors.toList());
        System.out.println(l);
    }
}

[ada, Hugo, lina, Zoé]
ADA
HUGO
LINA
ZOÉ
[4, 15, 8]

String::compareToIgnoreCase et String::toUpperCase sont des références à une méthode d'instance d'un objet quelconque : le premier argument devient l'objet sur lequel la méthode est appelée. La référence System.out::println est une méthode d'un objet donné, System.out ; Integer::parseInt est une méthode statique. Le tri ignore la casse : ada reste avant Hugo, alors qu'un tri ordinaire placerait les majuscules d'abord.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →