使用Lambda Stream 表达式,将 List<JavaBean> 转换为 List<Map>
Posted xiaojin21cen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Lambda Stream 表达式,将 List<JavaBean> 转换为 List<Map>相关的知识,希望对你有一定的参考价值。
使用Lambda Stream 表达式,进行各类转换,如下
- 处理对象中的值 ,
List<JavaBean>
处理后,返回List<JavaBean>
List<JavaBean11>
转换为List<JavaBean22>
List<JavaBean>
转换为List<Map>
List<JavaBean>
转换为List<String>
示例代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil;
public class Main {
public static void main(String[] args) {
User User1 = new User("zhangsan", 20, "beijing");
User User2 = new User("lisi", 25, "shanghai");
User User3 = new User("zhaoliu", 18, "caoxian");
List<User> userList = new ArrayList();
userList.add(User1);
userList.add(User2);
userList.add(User3);
// 6、处理对象中的值,返回List<User>
List<User> newList6 = userList.stream().map(user -> { // 方法的参数
user.setAge(user.getAge() + 100); // 对象中的值进行各种操作
// ....
return user; // 返回值对象不变
}).collect(Collectors.toList());
System.out.println("List<User> : " + newList6.toString());
// 5、返回新对象 List<UserVO>
List<UserVO> newList5 = userList.stream().map(user -> { // 方法的参数
UserVO userVO = new UserVO();
userVO.setAge(user.getAge());
userVO.setName(user.getName());
return userVO; // 返回值是新对象 UserVO
}).collect(Collectors.toList());
System.out.println("List<UserVO> : " + newList5.toString());
// 3、提取有用的数据,返回List<Map>
List<Map> newList4 = userList.stream().map(user -> { // 方法的参数
Map map = BeanUtil.beanToMap(user, false, true); // BeanUtil是一个工具类,beanToMap() 将JavaBean 转换为Map
map.remove("addr");// 删除Map中无用的键值
// map.remove("...");
return map; // 返回值是map类型
}).collect(Collectors.toList());
System.out.println("List<Map> : " + newList4.toString());
// 2、提取名字, 返回List<String>
List<String> newList2 = userList.stream().map(user -> { // 方法的参数
return user.getName(); // 返回值是name,是String类型
}).collect(Collectors.toList());
System.out.println("List<String> : " + newList2.toString());
// 1、提取年龄, 返回List<Integer>
List<Integer> newList1 = userList.stream().map(user -> { // 方法的参数
return user.getAge(); // 返回值是name,是String类型
}).collect(Collectors.toList());
System.out.println("List<String> : " + newList1.toString());
}
}
class User {
private String name;
private int age;
private String addr;
public User() {
super();
}
public User(String name, int age, String addr) {
super();
this.name = name;
this.age = age;
this.addr = addr;
}
// getter/setter 省略
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", addr=" + addr + "]";
}
}
class UserVO {
private String name;
private int age;
public UserVO() {
super();
}
public UserVO(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// getter/setter 省略
@Override
public String toString() {
return "UserVO [name=" + name + ", age=" + age + "]";
}
}
以上是关于使用Lambda Stream 表达式,将 List<JavaBean> 转换为 List<Map>的主要内容,如果未能解决你的问题,请参考以下文章
使用Lambda Stream 表达式,将 List<JavaBean> 转换为 List<Map>