0Pricing
Java Academy · Leçon

Conversion vers et depuis des flux d’objets

mapToObj et mapToInt

Conversion vers et depuis des flux d’objets est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.

Deux univers de flux

Java possède des flux d’objets (Stream<T>) et des flux de types primitifs (IntStream et autres). Les méthodes de mappage permettent de passer des uns aux autres.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        System.out.println(IntStream.rangeClosed(1, 3).sum());
    }
}

mapToObj&nbsp;: du primitif à l’objet

mapToObj convertit chaque type primitif en objet et produit un Stream<T>.

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

public class Main {
    public static void main(String[] args) {
        List<String> labels = IntStream.rangeClosed(1, 3)
            .mapToObj(n -> "item-" + n)
            .collect(Collectors.toList());
        System.out.println(labels);
    }
}

mapToInt&nbsp;: de l’objet au primitif

mapToInt extrait un int de chaque objet et produit un IntStream prêt pour une agrégation numérique.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("hi", "hello", "hey");
        int totalChars = words.stream()
            .mapToInt(String::length)
            .sum();
        System.out.println(totalChars);
    }
}

boxed&nbsp;: du primitif au flux d’objets enveloppes

boxed transforme un IntStream en Stream<Integer>, ce dont vous avez besoin avant de collecter les éléments dans une List.

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

public class Main {
    public static void main(String[] args) {
        List<Integer> list = IntStream.rangeClosed(1, 5)
            .boxed()
            .collect(Collectors.toList());
        System.out.println(list);
    }
}

mapToLong et mapToDouble

Le même principe s’applique aux autres types primitifs : mapToLong et mapToDouble.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> prices = List.of("9.99", "19.50", "4.25");
        double total = prices.stream()
            .mapToDouble(Double::parseDouble)
            .sum();
        System.out.println(total);
    }
}

Pourquoi mapToInt est préférable à map

Utiliser map sur un flux d’objets le conserve sous forme encapsulée. mapToInt donne accès à des méthodes numériques comme sum et average, tout en évitant l’encapsulation.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(10, 20, 30);
        double avg = nums.stream()
            .mapToInt(Integer::intValue)
            .average()
            .getAsDouble();
        System.out.println(avg);
    }
}

Aller-retour&nbsp;: de l’objet au type int puis à l’objet

Vous pouvez parcourir les deux directions dans une seule chaîne de traitement : extrayez les nombres, transformez-les, puis reconvertissez-les en objets.

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

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("a", "bb", "ccc");
        List<String> report = words.stream()
            .mapToInt(String::length)
            .mapToObj(len -> "len=" + len)
            .collect(Collectors.toList());
        System.out.println(report);
    }
}

asLongStream et asDoubleStream

Dans les flux de types primitifs, vous pouvez élargir les types : asLongStream et asDoubleStream évitent l’encapsulation tout en modifiant la largeur numérique.

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        double avg = IntStream.of(1, 2, 3, 4)
            .asDoubleStream()
            .average()
            .getAsDouble();
        System.out.println(avg);
    }
}

Collecter des résultats primitifs

Pour rassembler des types primitifs dans une collection, appelez d’abord boxed, puis un collecteur.

import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        Set<Integer> evens = IntStream.rangeClosed(1, 10)
            .filter(n -> n % 2 == 0)
            .boxed()
            .collect(Collectors.toSet());
        System.out.println(evens);
    }
}

flatMapToInt

flatMapToInt aplatit des objets en un seul IntStream, ce qui est utile lorsque chaque objet fournit plusieurs nombres.

import java.util.List;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        List<int[]> rows = List.of(new int[]{1, 2}, new int[]{3, 4});
        int sum = rows.stream()
            .flatMapToInt(Arrays::stream)
            .sum();
        System.out.println(sum);
    }
}

Choisir le bon mappeur

Choisissez selon la direction :

  • Objet vers primitif : mapToInt, mapToLong, mapToDouble.
  • Primitif vers objet : mapToObj ou boxed.
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> in = List.of("x", "yy");
        String out = in.stream()
            .mapToInt(String::length)
            .mapToObj(Integer::toString)
            .collect(Collectors.joining(","));
        System.out.println(out);
    }
}

Vérification rapide

Quelle méthode transforme un IntStream en Stream<Integer> ?

Récapitulatif

Vous avez effectué des conversions entre flux d’objets et flux de types primitifs :

  • mapToInt/mapToLong/mapToDouble convertissent les objets en types primitifs.
  • mapToObj et boxed convertissent les types primitifs en objets.
  • flatMapToInt aplatit plusieurs nombres en un seul IntStream.
  • Le passage aux flux de types primitifs donne accès aux agrégats numériques sans encapsulation.

Questions Fréquemment Posées

La leçon « Conversion vers et depuis des flux d’objets » est-elle gratuite ?

Oui — le texte complet de « Conversion vers et depuis des flux d’objets » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Conversion vers et depuis des flux d’objets » ?

mapToObj et mapToInt Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Conversion vers et depuis des flux d’objets » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. IntStream et LongStream
  2. Opérations de plage et d’agrégation
  3. Conversion vers et depuis des flux d’objets
  4. Générer des flux de types primitifs
← Retour à Java Academy