lla*_*all 3 java collections class 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);
}
Run Code Online (Sandbox Code Playgroud)
那么,有更简单的方法吗?这很简单,但我想知道是否有任何魔法可以将foos变形为条形而无需手动遍历列表,特别是因为我的输入列表可能很大.
如果没有,你们知道编译器是否做了什么来优化它?我主要担心的是表现.
谢谢!
-
Llappall
你不能真正避免走在列表中,因为你必须转换每个项目!
但是如果你编写一个带有a的Bar构造函数,你可以简化语法Foo.然后你的循环可以变成:
for(foo f : foos) {
myBars.add(new Bar(f));
}
Run Code Online (Sandbox Code Playgroud)
根据您的情况,另一种方法是根本不创建Bars 列表.相反,您只需添加一个Foo.getAsBar()方法,以便Bar根据需要动态生成对象.如果容器中的元素数量高于您需要访问它们的总次数,那么这可能会更有效.