开发者

Java8的stream().map()用法详解

开发者 https://www.devze.com 2025-03-15 14:54 出处:网络 作者: 程序员阿斌
目录Java8的stream().map()用法在Java编码过程中可能会遇到这个场景举出下面三个列子总结Java8的stream().map()用法
目录
  • Java8的stream().map()用法
    • 在Java编码过程中可能会遇到这个场景
    • 举出下面三个列子
  • 总结

    Java8的stream().map()用法

    在Java编码过程中可能会遇到这个场景

    遍历一个列表,对列表中的属性进行转换、赋值等操作形成我们想要的一个新列表。通常我们的常规思路就是直接使用for循环。

    在Java8引入lambda表达式后我们可以使用stream流链式处理的方式,形成新流来达到预期效果。

    stream操作比较多,这里主要针对map()

    举出下面三个列子

    体验stream().map().collect(Collectors.toList())对于集合元素处理的用法。

    package com.base.labguage.java8;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class StreamMap {
    
        private static class People{
            private String name;
            private Integer age;
            private String address;
    		
            // 只给出构造方法,忽略get/set细节
            public People(String name, Integer age, String address) {
                this.name = name;
                this.age = age;
                this.address = address;
            }
    
        }
    
        public static class PeoplePub{
            
            private String name;
            private Integer age;
    
          android  // 只给出构造方法,忽略get/set细节
            public PeoplePub(String name, Integer age) {
                this.name = name;
                this.age = age;
            }
            
            // 重写toString方法
            public String toString(){
                return "(" + this.name + "," + this.age +js ")";
    
            }
    
        }
    
        public static void main(String[] args) {
    
            List<People> peoples = Arrays.asList(
                    new People("zs", 25, "cs"),
                    new People("ls", 28, "bj"),
                    new People("ww", 2javascript3, "nj")
            );
    
            // List -> String
            List<String> names = peoples.stream().map(p -> p.getName()).collect(Collectors.toList());
            // stream流实现英文字母转大写
            List<String> upNames = names.stream().map(String::toUpperCase).collect(Collectors.toList());
            // stream流实现数字乘倍数
            List<Integer> ages = peoples.stream().map(p -> p.getAge() * 2).collect(Collectors.toList());
            // list - > new List
            List<PeoplePub> peoplePubs = peoples.stream().map(p -> {
                return new PeoplePub(p.getName(), p.getAge());
            }).collect(Collectors.toList());
    
            System.out.println("to print upnames List : " + upNames);
            System.out.println("to print ages List : " + ages);
            System.out.println("to print new people List" + peoplePubs.toString());
    
        }
    
    }
    

    控制台打印结果:

    to print upnames List : [ZS, LS, WW]

    to print ages List : [50, 56, 46]

    to print new pwww.devze.comjseople List[(zs,25), (ls,28), (ww,23)]

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号