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)]
道友可以在博客下方留言互相探讨学习或者关注公众号fairy with you
了解更多,欢迎来撩!
注:本博客仅用于交流学习,不用于任何商业用途,欢迎思维碰撞。
更多推荐
已为社区贡献2条内容
所有评论(0)