Java:将类的集合转换为B类的集合

标签 java class collections creation

给定 Foo myFoos 列表,我需要将它们映射到不同类的集合,例如 Bar。我现在这样做:

List<Bar> myBars = new...
for(Foo f : foos) {
    Bar b = new Bar();
    b.setAProperty(f.getProperty);
    b.setAnotherProp(f.getAnotherProp);
    myBars.add(b);
}

那么,有没有更简单的方法来做到这一点?当然这很简单,但我想知道是否有任何魔法可以将 foos 变成 bars 而无需手动遍历列表,特别是因为我的输入列表可能很大。
如果没有,你们知道编译器是否做了任何优化吗?我主要担心性能。

谢谢!

--
拉普尔

最佳答案

您无法真正避免遍历列表,因为您必须转换每一项!

但是如果您编写一个接受FooBar 构造函数,您可以简化语法。然后你的循环可以变成:

for(foo f : foos) {
    myBars.add(new Bar(f));
}

根据您的情况,另一种方法是根本不创建 Bar 列表。相反,您可以简单地添加一个 Foo.getAsBar() 方法,这样您就可以根据需要动态生成一个 Bar 对象。如果容器中元素的数量高于您需要访问它们的总次数,那么这可能更有效。

关于Java:将类的集合转换为B类的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6281174/

相关文章:

Java - 根据两个属性值对 JSONArray 进行排序

C++ 从 regex_iterator 获取匹配项

c# - 在树结构上实现 IEnumerable

java - 在 Java 的同一个循环中迭代两个 hashmap 的最佳方法是什么?

c# - 对象是使用 List<T>.Add 复制的,还是简单地使用 "mapped"?

java - Elasticsearch Spring boot 集成测试

java - 'nohup mycommand &' 通过 Java 代码

java - 我如何阻止这种用石板替换特殊板的能力?

java - 如何从java中的.class文件获取实例

powershell - 如何在 PowerShell 中创建私有(private)类成员?