使用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流写法:

//使用stream拷贝list
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的拷贝,看个人喜好吧。

支付宝搜索:344355 领取随机红包

如果文章对您有帮助,欢迎给作者打赏