在java开发中,经常能碰到list集合拷贝的需求,如将List<User>
拷贝成List<UserDTO>
提供给接口使用。
一般的写法:
//不使用stream拷贝list
List<UserDTO> dtoList = new ArrayList<>();
for (User user : list) {
UserDTO d = new UserDTO();
BeanUtils.copyProperties(user, d);
dtoList.add(d);
}
使用java8的stream流写法:
List<UserDTO> dtoList = list.stream()
.map(e -> {
UserDTO d = new UserDTO();
BeanUtils.copyProperties(e, d);
return d;
}).collect(Collectors.toList());
两者在实现User对象拷贝到UserDTO对象时都是用了Spring中内置的BeanUtils(这类工具类很多,自行选择合适的即可。)
实现原理都是遍历集合拷贝对象然后添加到新集合,看起来好像java8的stream流处理代码也没少多少,所以用哪个方式实现对list的拷贝,看个人喜好吧。