Sobes.tech
Junior — Middle

Quelle est la différence entre les méthodes map et flatMap dans l'API Stream de Java et quelles sont leurs particularités d'utilisation?

sobes.tech IA

Réponse de l'IA

Les méthodes map et flatMap dans l'API Stream de Java servent à transformer les éléments d'un flux, mais fonctionnent différemment :

  • map prend une fonction qui transforme chaque élément du flux en un autre élément. En résultat, on obtient un flux avec le même nombre d'éléments, mais d'un type ou d'une forme différente.

  • flatMap prend une fonction qui transforme chaque élément en un flux (Stream) d'éléments, puis fusionne ("aplatis") tous ces flux en un seul flux commun. Cela est utile lorsque d'un seul élément, on souhaite obtenir plusieurs éléments.

Exemple :

List<String> words = Arrays.asList("hello", "world");

// map : transformer chaque mot en sa longueur
List<Integer> lengths = words.stream()
    .map(String::length)
    .collect(Collectors.toList()); // [5, 5]

// flatMap : diviser chaque mot en lettres et fusionner toutes les lettres en un flux
List<String> letters = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]

Caractéristiques d'utilisation :

  • map convient pour des transformations simples d'éléments un à un.
  • flatMap est nécessaire lorsque d'un seul élément, on veut obtenir plusieurs éléments, et qu'il faut "aplatir" des structures imbriquées.