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

 更新时间:2025年03月13日 09:37:06   作者:程序员阿斌  
这篇文章主要介绍了Java8的stream().map()用法详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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;

        // 只给出构造方法,忽略get/set细节
        public PeoplePub(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
        
        // 重写toString方法
        public String toString(){
            return "(" + this.name + "," + this.age + ")";

        }

    }

    public static void main(String[] args) {

        List<People> peoples = Arrays.asList(
                new People("zs", 25, "cs"),
                new People("ls", 28, "bj"),
                new People("ww", 23, "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 people List[(zs,25), (ls,28), (ww,23)]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java容器ArrayList原理解析

    Java容器ArrayList原理解析

    这篇文章主要介绍了Java容器ArrayList原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • ThreadLocal 在上下文传值场景实践源码

    ThreadLocal 在上下文传值场景实践源码

    这篇文章主要为大家介绍了ThreadLocal在上下文传值场景下的实践源码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • druid配置数据库连接使用密文密码方式

    druid配置数据库连接使用密文密码方式

    这篇文章主要介绍了druid配置数据库连接使用密文密码方式,具有很好的参考价值,希望对大家有所帮助,
    2023-12-12
  • MybatisPlus中的save方法详解

    MybatisPlus中的save方法详解

    save方法是Mybatis-plus框架提供的一个添加记录的方法,它用于将一个实体对象插入到数据库表中,这篇文章主要介绍了MybatisPlus中的save方法,需要的朋友可以参考下
    2023-11-11
  • 解决MyEclipse中Maven设置jdk版本jdk1.8报错问题

    解决MyEclipse中Maven设置jdk版本jdk1.8报错问题

    今天安装了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一个maven项目,项目默认是jdk1.5,改成jdk1.8后项目报错
    2018-10-10
  • 扫描到配置类但是配置类不生效的问题及解决方案

    扫描到配置类但是配置类不生效的问题及解决方案

    文章主要讨论了配置类不生效的几种常见原因及解决方法,包括配置类未被正确扫描、@Configuration注解未被解析、@Bean注解未被解析和属性未被正确注入等,并提供了相应的解决措施,如使用@ComponentScan指定扫描路径或使用@Import导入配置类
    2026-03-03
  • Java环境中MyBatis与Spring或Spring MVC框架的集成方法

    Java环境中MyBatis与Spring或Spring MVC框架的集成方法

    和MyBatis类似,Spring或者Spring MVC框架在Web应用程序的运作中同样主要负责处理数据库事务,这里我们就来看一下Java环境中MyBatis与Spring或Spring MVC框架的集成方法
    2016-06-06
  • Java Lambda 表达式从入门到实战彻底搞懂函数式编程

    Java Lambda 表达式从入门到实战彻底搞懂函数式编程

    本文详细介绍了Java 8中的Lambda表达式,包括为什么需要Lambda、Lambda的核心概念、语法详解、实战场景、与匿名内部类的区别、优缺点以及应用建议,Lambda表达式简化了代码编写,提升了开发效率,是函数式编程的重要体现,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 解决Spring boot2.0+配置拦截器拦截静态资源的问题

    解决Spring boot2.0+配置拦截器拦截静态资源的问题

    这篇文章主要介绍了解决Spring boot2.0+配置拦截器拦截静态资源的问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Aspectj与Spring AOP的对比分析

    Aspectj与Spring AOP的对比分析

    这篇文章主要介绍了Aspectj与Spring AOP的对比分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论