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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.