Java8 - Streams map()
创始人
2024-05-03 21:58:31
0

文章目录

  • 概述
  • Case 1 : A List of Strings to Uppercase
  • Case 2 : List of objects -> List of String
  • Case 3 : List of objects -> List of other objects
  • Test

在这里插入图片描述

概述

Stream.map()是Stream最常用的一个转换方法,它把一个Stream转换为另一个Stream

map()方法用于将一个Stream的每个元素映射成另一个元素并转换成一个新的Stream

可以将一种元素类型转换成另一种元素类型。

    /*** Returns a stream consisting of the results of applying the given* function to the elements of this stream.** 

This is an intermediate* operation.** @param The element type of the new stream* @param mapper a non-interfering,* stateless* function to apply to each element* @return the new stream*/ Stream map(Function mapper);

map()方法接收的对象是Function接口对象,它定义了一个apply()方法,负责把一个T类型转换成R类型。

其中,Function的定义为

@FunctionalInterface
public interface Function {/*** Applies this function to the given argument.** @param t the function argument* @return the function result*/R apply(T t);  //   将T类型转换为R:............}

Case 1 : A List of Strings to Uppercase

/*** A List of Strings to Uppercase*/public static void StringsListToUppercase() {List list = Arrays.asList("a", "b", "c", "d");// before java 8List newList = new ArrayList<>();for (String str : list) {newList.add(str.toUpperCase());}System.out.println(newList);// java 8List collect = list.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println(collect);// Extra, streams apply to any data type.List integers = Arrays.asList(1, 2, 3, 4);List collect1 = integers.stream().map(t -> t * 2).collect(Collectors.toList());System.out.println(collect1);}

Case 2 : List of objects -> List of String

 /*** List of objects -> List of String*/public static void objectsListToStringList() {List artisanList = Arrays.asList(new Artisan("小A", 18, new BigDecimal(100)),new Artisan("小B", 19, new BigDecimal(200)),new Artisan("小C", 20, new BigDecimal(300)));// Before Java 8List nameList = new ArrayList<>();for (Artisan artisan : artisanList) {nameList.add(artisan.getName());}log.info(nameList.toString());// Java 8List collect = artisanList.stream().map(Artisan::getName).collect(Collectors.toList());log.info(collect.toString());}

Case 3 : List of objects -> List of other objects

/*** List of objects -> List of other objects*/public static void objectsListToOtherObjectsList() {List artisanList = Arrays.asList(new Artisan("小A", 18, new BigDecimal(100)),new Artisan("小B", 19, new BigDecimal(200)),new Artisan("小C", 20, new BigDecimal(300)));// Before Java 8List convert2OtherList = new ArrayList<>();for (Artisan artisan : artisanList) {ArtisanOther artisanOther = new ArtisanOther();artisanOther.setAge(artisan.getAge());artisanOther.setName(artisan.getName());if ("小C".equals(artisan.getName())) {artisanOther.setOtherInfo("Only For 小C");}convert2OtherList.add(artisanOther);}log.info(convert2OtherList.toString());// Java 8artisanList.stream().map(artisan -> {ArtisanOther artisanOther = new ArtisanOther();artisanOther.setAge(artisan.getAge());artisanOther.setName(artisan.getName());if ("小C".equals(artisan.getName())) {artisanOther.setOtherInfo("Only For 小C");}return artisanOther;}).collect(Collectors.toList());log.info(convert2OtherList.toString());}

Test

    public static void main(String[] args) {// A List of Strings to UppercaseStringsListToUppercase();// List of objects -> List of StringobjectsListToStringList();// List of objects -> List of other objectsobjectsListToOtherObjectsList();}// 俩内部类 @Data@NoArgsConstructor@AllArgsConstructorstatic class Artisan {private String name;private int age;private BigDecimal salary;}@Data@NoArgsConstructor@AllArgsConstructorstatic class ArtisanOther {private String name;private int age;private String otherInfo;}
[A, B, C, D]
[A, B, C, D]
[2, 4, 6, 8]
21:57:13.914 [main] INFO com.artisan.java8.stream2.StreamMap - [小A, 小B, 小C]
21:57:13.918 [main] INFO com.artisan.java8.stream2.StreamMap - [小A, 小B, 小C]
21:57:13.919 [main] INFO com.artisan.java8.stream2.StreamMap - [StreamMap.ArtisanOther(name=小A, age=18, otherInfo=null), StreamMap.ArtisanOther(name=小B, age=19, otherInfo=null), StreamMap.ArtisanOther(name=小C, age=20, otherInfo=Only For 小C)]
21:57:13.920 [main] INFO com.artisan.java8.stream2.StreamMap - [StreamMap.ArtisanOther(name=小A, age=18, otherInfo=null), StreamMap.ArtisanOther(name=小B, age=19, otherInfo=null), StreamMap.ArtisanOther(name=小C, age=20, otherInfo=Only For 小C)]

在这里插入图片描述

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...