Table des matières
Avant-propos
Vue d'ensemble
Exemple
Maison Java javaDidacticiel Comment utiliser la méthode map() dans Java8 StreamAPI

Comment utiliser la méthode map() dans Java8 StreamAPI

May 13, 2023 pm 07:16 PM
java map() streamapi

Avant-propos

Dans le travail de développement quotidien, nous rencontrons souvent le problème du traitement des données dans List, comme l'obtention d'une collection d'attributs dans un objet à partir d'une collection d'objets. Ce que nous pensions auparavant était de parcourir chaque élément, puis de le retirer et de le placer dans une autre collection, ce qui est plus fastidieux ; après Java 8, les opérations Stream peuvent être effectuées sur les collections, ce qui rend le traitement ci-dessus plus concis.

Vue d'ensemble

Stream Il existe une méthode map() dans le traitement du streaming. Jetons d'abord un coup d'œil à sa définition. Cette méthode se trouve dans la classe java.util.stream.Stream

Comment utiliser la méthode map() dans Java8 StreamAPI

Vous pouvez voir que la carte. () reçoit une expression fonctionnelle Paramètres d'interface, le paramètre d'entrée a un T et renvoie un flux Stream Ce flux est R générique. Il y a principalement les points suivants à noter :

  • Le paramètre d'entrée est un élément dans un flux ;

  • Le paramètre de sortie est un flux, et le flux est un nouvel élément

est représenté par un ; diagramme comme suit, original Il y a quatre motifs circulaires dans le flux.Après avoir appelé la fonction map(), ils deviennent quatre motifs en étoile à cinq branches. Les motifs circulaires et le motif en étoile à cinq branches sont ici en correspondance biunivoque. , c'est-à-dire le nombre d'éléments dans le flux d'origine. Appel Il y a encore de nombreux éléments après la méthode map(). La seule chose qui change est le type d'élément dans le flux.

Comment utiliser la méthode map() dans Java8 StreamAPI

Exemple

Nous créons d'abord une classe d'entité Student.java

@Data
public class Student implements Serializable {
    /**
     * 姓名
     */
    private String name;
    /**
     * 班级
     */
    private String schoolClass;
    /**
     *语文成绩
     */
    private Integer chineseScore;
    /**
     * 数学成绩
     */
    private Integer mathScore;
}
Copier après la connexion

Et puis créons une classe pour initialiser les données :

public class DataFactory {
    public static List<Student> initData(){
        List<Student> list= new ArrayList<>();
        Student s1=new Student();
        s1.setName("汤霖");
        s1.setSchoolClass("小一班");
        s1.setChineseScore(87);
        s1.setMathScore(95);
        list.add(s1);
 
        Student s2=new Student();
        s2.setName("李牧唐");
        s2.setSchoolClass("小二班");
        s2.setChineseScore(98);
        s2.setMathScore(97);
        list.add(s2);
 
        Student s3=new Student();
        s3.setName("顾北辰");
        s3.setSchoolClass("二年级");
        s3.setChineseScore(89);
        s3.setMathScore(94);
        list.add(s3);
 
        Student s4=new Student();
        s4.setName("言言");
        s4.setSchoolClass("小二班");
        s4.setChineseScore(100);
        s4.setMathScore(90);
        list.add(s4);
 
        Student s5=new Student();
        s5.setName("大运");
        s5.setSchoolClass("小三班");
        s5.setChineseScore(96);
        s5.setMathScore(100);
        list.add(s5);
        return list;
    }
}
Copier après la connexion

Découvrez tous les noms d'étudiants

public static void main(String[] args) {
    DataFactory.initData().stream()
        .map(student -> student.getName())
        .forEach(System.out::println);
}
Copier après la connexion

La méthode map() est utilisée ici , Le paramètre d'entrée est Student et le paramètre de sortie est un flux avec String comme type générique. Enfin, forEach est utilisé pour imprimer. En regardant les résultats, vous pouvez voir que les noms de tous les étudiants ont été imprimés. Et si vous souhaitez mettre ces noms d'étudiants dans une liste ?

Comment utiliser la méthode map() dans Java8 StreamAPIMettez les noms des étudiants dans la liste

public static void main(String[] args) {
    //将所有的学生姓名放到list中
    List<String> studentNames = DataFactory.initData().stream()
        .map(student -> student.getName())
        .collect(Collectors.toList());
    for (String studentName : studentNames) {
        System.out.println(studentName);
    }
}
Copier après la connexion

Trouvez de la même manière toutes les classes et découvrez les scores de tous les étudiants. Vous pouvez voir que les noms des étudiants ou des classes imprimés contiennent des données en double. Comment le résoudre. On sait que les données sont mises dans la Liste à la fin. Afin de résoudre le problème de duplication, les données peuvent être mises dans le Set et utiliser la fonction de déduplication du Set :

//将学生姓名放到Set中,可以实现去重功能
Set<String> studentNames = DataFactory.initData().stream()
    .map(student -> student.getName())
    .collect(Collectors.toSet());
Copier après la connexion
Le résultat ne sera plus imprimé. Si vous êtes intéressé, vous pouvez l'essayer vous-même.

Réglez le score chinois de l'élève nommé "Tang Lin" sur 90

Il est maintenant nécessaire de définir le score chinois de l'élève nommé Tang Lin sur 90. la fonction utilisation map() comment faire ?

public static void main(String[] args) {
    List<Student> students = DataFactory.initData();

    List<Student> studentNames = students.stream().map(student -> {
        if ("汤霖".equals(student.getName())) {
            student.setChineseScore(90);
        }
        return student;
    }).collect(Collectors.toList());

    for (Student studentName : studentNames) {
        System.out.println(studentName);
    }
    //打印老的list
    System.out.println("-----改之前的数据-----");
    for (Student studentName : students) {
        System.out.println(studentName);
    }
}
Copier après la connexion
Résultat de sortie : Comment utiliser la méthode map() en Java8 StreamAPI

90,看下利用 map() 函数怎么做?

rrreee

输出结果:

Comment utiliser la méthode map() dans Java8 StreamAPI

从上面的结果中可以看出,汤霖的语文成绩的确被改为了90,这点是没错的。再看原数据也被改为了90Il ressort des résultats ci-dessus que le score chinois de Tang Lin a effectivement été modifié en 90, ce qui est correct. En regardant les données d'origine, elles ont également été modifiées en 90 Comme mentionné ci-dessus, la méthode map() génère un nouveau flux et les données du flux d'origine ont également été modifiées, car ce qui suit. La ligne de code est dans l'original. Si les données du type référence sont modifiées en fonction des éléments du flux, les données du flux d'origine seront également modifiées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

See all articles