Java8的stream().map()用法詳解
Java8的stream().map()用法
在Java編碼過程中可能會遇到這個(gè)場景
遍歷一個(gè)列表,對列表中的屬性進(jìn)行轉(zhuǎn)換、賦值等操作形成我們想要的一個(gè)新列表。通常我們的常規(guī)思路就是直接使用for循環(huán)。
在Java8引入lambda表達(dá)式后我們可以使用stream流鏈?zhǔn)教幚淼姆绞?,形成新流來達(dá)到預(yù)期效果。
stream操作比較多,這里主要針對map()
舉出下面三個(gè)列子
體驗(yàn)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;
// 只給出構(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;
}
// 重寫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)大寫
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());
}
}
控制臺打印結(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)文章
解決MyEclipse中Maven設(shè)置jdk版本jdk1.8報(bào)錯(cuò)問題
今天安裝了jdk1.8、tomcat8、和maven3.5.2,弄好后在myeclipse新建了一個(gè)maven項(xiàng)目,項(xiàng)目默認(rèn)是jdk1.5,改成jdk1.8后項(xiàng)目報(bào)錯(cuò)2018-10-10
Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法
和MyBatis類似,Spring或者Spring MVC框架在Web應(yīng)用程序的運(yùn)作中同樣主要負(fù)責(zé)處理數(shù)據(jù)庫事務(wù),這里我們就來看一下Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法2016-06-06
Java Lambda 表達(dá)式從入門到實(shí)戰(zhàn)徹底搞懂函數(shù)式編程
本文詳細(xì)介紹了Java 8中的Lambda表達(dá)式,包括為什么需要Lambda、Lambda的核心概念、語法詳解、實(shí)戰(zhàn)場景、與匿名內(nèi)部類的區(qū)別、優(yōu)缺點(diǎn)以及應(yīng)用建議,Lambda表達(dá)式簡化了代碼編寫,提升了開發(fā)效率,是函數(shù)式編程的重要體現(xiàn),感興趣的朋友跟隨小編一起看看吧2025-12-12
解決Spring boot2.0+配置攔截器攔截靜態(tài)資源的問題
這篇文章主要介紹了解決Spring boot2.0+配置攔截器攔截靜態(tài)資源的問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08

