一个对象的集合转化成另一个对象的集合 PO集合转换为VO集合

一个对象的集合转化成另一个对象的集合 PO集合转换为VO集合

准备数据

import com.google.common.base.Function;
import com.google.common.collect.Lists;
import lombok.*;
import lombok.extern.slf4j.Slf4j;

import java.util.*;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@Slf4j
public class StreamTest {

	
	public static List<Student> stus = new ArrayList();
	 static {

		 Student s1 = new Student("2015134001", "小3", 15, "1501");
		 Student s2 = new Student("2015134003", "小4", 14, "1503");
		 Student s3 = new Student("2015134006", "小5", 15, "1501");
		 Student s4 = new Student("2015134008", "小6", 17, "1505");
		 Student s5 = new Student("2015134008", "小7", 19, "1505");
		 Student s6 = new Student("2015134008", "小8", 76, "1505");
		 Student s7 = new Student("2015134008", "小9", 7, "1505");

		 stus.add(s1);
		 stus.add(s2);
		 stus.add(s3);
		 stus.add(s4);
		 stus.add(s5);
		 stus.add(s6);
		 stus.add(s7);
		 stus.add(new Student("2015134012", "小c", 13, "1503"));
		 stus.add(new Student("2015134013", "小s", 14, "1503"));
		 stus.add(new Student("2015134015", "小d", 15, "1504"));
		 stus.add(new Student("2015134018", "小y", 16, "1505"));

	 }

	public static void main (String[] args){



		
		/*List<Pepole> transform = Lists.transform(stus, new Function<Student, Pepole>() {

			public Pepole apply( Student entity) {
				// 内部对象的转换操作
				Pepole vo = new Pepole();
				vo.setId(entity.getId());
				vo.setName(entity.getName());
				vo.setAge(entity.getAge());
				return vo;
			}



		});*/
		List<Pepole> transform1 = Lists.transform(stus,(entity)->{
			Pepole vo = new Pepole();
			vo.setId(entity.getId());
			vo.setName(entity.getName());
			vo.setAge(entity.getAge());
			return vo;
		});
		log.info("新集合,{}",transform1);




	}

}
@Data
@Getter
@Setter
@AllArgsConstructor
class Student {

	private String id ;
	private String name ;
	private int  age ;
	private String grade ;


}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Pepole {

	private String id ;
	private String name ;
	private int  age ;

}

一种方法 引入com.google.guava 工具类

dependency>
   <groupId>com.google.guava</groupId>
   <artifactId>guava</artifactId>
   <version>21.0</version>
</dependency>

方法

lists方法:

public static <F, T> List<T> transform(
    List<F> fromList, Function<? super F, ? extends T> function)
    
方法返回一个List对象,传入参数,要转换的集合对象,一个函数对象,传入要转换的集合对象的子对象 转换为目标集合的子对象   
List<Pepole> transform1 = Lists.transform(stus,(entity)->{
			Pepole vo = new Pepole();
			vo.setId(entity.getId());
			vo.setName(entity.getName());
			vo.setAge(entity.getAge());
			return vo;
		});
		log.info("新集合,{}",transform1);

2.直接使用Java8 的Stream api

List<Pepole> transform1 = stus.stream()
      .map(e -> new Pepole(e.getId(), e.getName(),e.getAge()))
      .collect(Collectors.toList());
log.info("新集合,{}",transform1);

3.借助工具类

if(CollectionUtils.isNotEmpty(stus)){
			List<Pepole> transform1 = stus.stream().map(e -> {
				Pepole p = new Pepole();
				BeanUtils.copyProperties(e, p);

				return p;
			}).collect(Collectors.toList());
			log.info("新集合,{}",transform1);
		}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值