使用java8的stream流实现对list集合的拷贝

在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(这类工具类很多。我这里用的是spring自带的)

实现原理都是遍历集合拷贝对象然后添加到新集合,看起来好像java8的stream流处理代码也没少多少,所以用哪个方式实现对list的拷贝,看个人喜好吧。


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍