Java8的stream().map()用法詳解
Java8的stream().map()用法
在Java編碼過(guò)程中可能會(huì)遇到這個(gè)場(chǎng)景
遍歷一個(gè)列表,對(duì)列表中的屬性進(jìn)行轉(zhuǎn)換、賦值等操作形成我們想要的一個(gè)新列表。通常我們的常規(guī)思路就是直接使用for循環(huán)。
在Java8引入lambda表達(dá)式后我們可以使用stream流鏈?zhǔn)教幚淼姆绞?,形成新流?lái)達(dá)到預(yù)期效果。
stream操作比較多,這里主要針對(duì)map()
舉出下面三個(gè)列子
體驗(yàn)stream().map().collect(Collectors.toList())對(duì)于集合元素處理的用法。
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; // 只給出構(gòu)造方法,忽略get/set細(xì)節(jié) 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; // 只給出構(gòu)造方法,忽略get/set細(xì)節(jié) public PeoplePub(String name, Integer age) { this.name = name; this.age = age; } // 重寫(xiě)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流實(shí)現(xiàn)英文字母轉(zhuǎn)大寫(xiě) List<String> upNames = names.stream().map(String::toUpperCase).collect(Collectors.toList()); // stream流實(shí)現(xiàn)數(shù)字乘倍數(shù) 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()); } }
控制臺(tái)打印結(jié)果:
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)]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java創(chuàng)建數(shù)據(jù)透視表并導(dǎo)出為PDF的方法
數(shù)據(jù)透視分析是一種強(qiáng)大的工具,可以幫助我們從大量數(shù)據(jù)中提取有用信息并進(jìn)行深入分析,本文將介紹如何使用Java來(lái)構(gòu)建PivotTable以及實(shí)現(xiàn)數(shù)據(jù)透視分析,并將其導(dǎo)出為PDF2023-10-10淺析Java中print、printf、println的區(qū)別
以下是對(duì)Java中print、printf、println的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08java string 轉(zhuǎn)date方法如何實(shí)現(xiàn)
在開(kāi)發(fā)應(yīng)用中經(jīng)常會(huì)使用到j(luò)ava string 轉(zhuǎn)date這種不是很常見(jiàn)的做法,本文將以此問(wèn)題提供詳細(xì)解決方案,需要了解的朋友可以參考下2012-11-11Spring?cloud?OpenFeign中動(dòng)態(tài)URl、動(dòng)態(tài)傳遞接口地址代碼示例
openFeign是作為微服務(wù)之間調(diào)用的解決方案,每個(gè)微服務(wù)項(xiàng)目是必不可少的,下面這篇文章主要給大家介紹了關(guān)于Spring?cloud?OpenFeign中動(dòng)態(tài)URl、動(dòng)態(tài)傳遞接口地址的相關(guān)資料,需要的朋友可以參考下2024-02-02Spring Security 圖片驗(yàn)證碼功能的實(shí)例代碼
spring security是一系列的過(guò)濾器鏈,所以在這里驗(yàn)證碼也聲明為過(guò)濾器,加在過(guò)濾器鏈的 登錄過(guò)濾器之前,然后自定義一個(gè)異常類(lèi),來(lái)響應(yīng)驗(yàn)證碼的錯(cuò)誤信息.這篇文章主要介紹了Spring Security 圖片驗(yàn)證碼,需要的朋友可以參考下2018-03-03Java 八種基本類(lèi)型和基本類(lèi)型封裝類(lèi)
八種基本數(shù)據(jù)類(lèi)型分別是:int、short、float、double、long、boolean、byte、char;下面跟隨腳本之家小編一起學(xué)習(xí)java八種基本類(lèi)型和基本類(lèi)型封裝類(lèi)2017-09-09Struts2攔截器 關(guān)于解決登錄的問(wèn)題
下面小編就為大家?guī)?lái)一篇Struts2攔截器 關(guān)于解決登錄的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法
我們需要設(shè)置jdk的版本,不然會(huì)提示導(dǎo)致語(yǔ)法錯(cuò)誤,這篇文章主要介紹了IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法,小編覺(jué)得不錯(cuò),一起來(lái)了解一下2019-04-04