使用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>

Lambda表达式和Stream介绍

lambda表达式与Stream流(非io)

JAVA8之lambda表达式详解,及stream中的lambda使用

Java8特性详解 lambda表达式 Stream

lambda表达式使用stream过滤集合浅尝