【问题标题】:How can I efficiently convert a list of object ADto to a list of object BVo? Both objects have the same property values如何有效地将对象 ADto 列表转换为对象 BVo 列表?两个对象具有相同的属性值
【发布时间】:2020-07-31 20:52:30
【问题描述】:

我有一门课:

public class ADto
{
    private double c;
    private String d;
    private String e;
}

和另一个班级

public class BVo
{
    private double c;
    private String d;
    private String e;
}

我有一个 BVo 列表:

List<BVo> vo;

我需要使用一个转换器来转换成一个 Dto 的列表

List<ADto> dto;

然后,此 ADto 列表将被放入包装器 DTO 并从我的端点返回。

有没有一种简单的方法可以有效地做到这一点?效率是我实施的关键。

【问题讨论】:

    标签: java list dto transformer


    【解决方案1】:

    如果说最有效,您的意思是最快的方式。然后你应该做的是在你的BVo中创建一个构造函数,接受cde,并将其映射到它的属性。

    public class BVo
    {
        private double c;
        private String d;
        private String e;
    
        public BVo(double c, String d, String e)
        {
            this.c = c;
            this.d = d;
            this.e = e;
        }
    }
    

    之后,使用以下命令将您的初始列表转换为新列表:

    public List<BVo> convert(List<ADto> list)
    {
        List<BVo> result = new ArrayList<>();
    
        for (ADto item : list)
        {
            result.add(new BVo(item.getC(), item.getD(), item.getE()));
        }
    
        return result;
    }
    

    【讨论】:

    • for each 会比之前的流实现更高效吗?
    • @MichaelSmith 这里没有什么是合理的快速实现流或循环
    • 是的,我对这个任务不太满意,它有缺陷的 imo @User - 支持不要说谢谢
    • 我自己从未对它进行基准测试,但我了解到使用流可能比简单的 for 循环慢 30%。因此,如果您真的那么关心性能,它可能会为您提供所需的优势。如果您有大量的项目,将列表分成较小的列表并并行处理它们可能会有所帮助,但这也取决于硬件。如果你有一个单核处理器,尝试并行运行只是不必要的开销,而且会比顺序处理慢。
    • @msmolcic 回想起来我想我听说过类似的事情。感谢您的评论。
    猜你喜欢
    • 2023-04-07
    • 2019-12-16
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多