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创建数据透视表并导出为PDF的方法

    使用Java创建数据透视表并导出为PDF的方法

    数据透视分析是一种强大的工具,可以帮助我们从大量数据中提取有用信息并进行深入分析,本文将介绍如何使用Java来构建PivotTable以及实现数据透视分析,并将其导出为PDF
    2023-10-10
  • 浅析Java中print、printf、println的区别

    浅析Java中print、printf、println的区别

    以下是对Java中print、printf、println的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • java string 转date方法如何实现

    java string 转date方法如何实现

    在开发应用中经常会使用到java string 转date这种不是很常见的做法,本文将以此问题提供详细解决方案,需要了解的朋友可以参考下
    2012-11-11
  • Spring cloud OpenFeign中动态URl、动态传递接口地址代码示例

    Spring cloud OpenFeign中动态URl、动态传递接口地址代码示例

    openFeign是作为微服务之间调用的解决方案,每个微服务项目是必不可少的,下面这篇文章主要给大家介绍了关于Spring cloud OpenFeign中动态URl、动态传递接口地址的相关资料,需要的朋友可以参考下
    2024-02-02
  • Java中双向链表详解及实例

    Java中双向链表详解及实例

    这篇文章主要介绍了Java中双向链表详解及实例的相关资料,需要的朋友可以参考下
    2017-04-04
  • 基于Java 谈回调函数

    基于Java 谈回调函数

    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所 指向的函数时,我们就说这是回调函数
    2017-05-05
  • Spring Security 图片验证码功能的实例代码

    Spring Security 图片验证码功能的实例代码

    spring security是一系列的过滤器链,所以在这里验证码也声明为过滤器,加在过滤器链的 登录过滤器之前,然后自定义一个异常类,来响应验证码的错误信息.这篇文章主要介绍了Spring Security 图片验证码,需要的朋友可以参考下
    2018-03-03
  • Java 八种基本类型和基本类型封装类

    Java 八种基本类型和基本类型封装类

    八种基本数据类型分别是:int、short、float、double、long、boolean、byte、char;下面跟随脚本之家小编一起学习java八种基本类型和基本类型封装类
    2017-09-09
  • Struts2拦截器 关于解决登录的问题

    Struts2拦截器 关于解决登录的问题

    下面小编就为大家带来一篇Struts2拦截器 关于解决登录的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • IDEA-Maven项目的jdk版本设置方法

    IDEA-Maven项目的jdk版本设置方法

    我们需要设置jdk的版本,不然会提示导致语法错误,这篇文章主要介绍了IDEA-Maven项目的jdk版本设置方法,小编觉得不错,一起来了解一下
    2019-04-04

最新评论