For循环将自定义对象添加到arraylist For n次-Java8
我们有一个旧的循环样式,用于向ArrayList添加自定义对象For循环将自定义对象添加到arraylist For n次-Java8,java,for-loop,java-8,java-stream,Java,For Loop,Java 8,Java Stream,我们有一个旧的循环样式,用于向ArrayList添加自定义对象 public List<Object> generateList() { List<Object> list = new ArrayList<Object>(); for (int i = 0; i < 10; i++) { list.add(new Manager(50000, 10, "Finance Manager")); list.a
public List<Object> generateList() {
List<Object> list = new ArrayList<Object>();
for (int i = 0; i < 10; i++) {
list.add(new Manager(50000, 10, "Finance Manager"));
list.add(new Employee(30000, 5, "Accounts"));
}
return list;
}
公共列表生成器列表(){
列表=新的ArrayList();
对于(int i=0;i<10;i++){
增加(新经理(50000,10,“财务经理”);
增加(新员工(30000,5,“账户”);
}
退货清单;
}
使用java8有什么方法可以做到这一点吗
我尝试使用Stream.generate(MyClass::new).limit(10)但是,在java8中,我没有找到实现上述功能的正确方法
有什么建议吗?由于没有通用的派生类型,也不需要替换元素,一种方法是简单地创建两种类型元素的nCopies
,并将它们添加到结果列表中:
List<Object> list = new ArrayList<>();
list.addAll(Collections.nCopies(10, new Manager(50000, 10, "Finance Manager")));
list.addAll(Collections.nCopies(10, new Employee(30000, 5, "Accounts")));
return list;
但是一个绝对有效的要求是,要交替地从两个流中交错元素,您可以使用中建议的解决方案,但要使用为当前对象定义的类型,或者修改实现以返回对象
类型流。(老实说,尽管有选择权,我还是更喜欢前者。)您为什么要使用列表
,在每个备选职位上都有经理和员工对象,或者您只想在列表中有10个员工和10个经理项目,这很重要吗?备选职位不是强制性的。我只需要在列表中有10个员工和10个经理对象。请记住Collections.nCopies
返回包含相同对象n次的列表,而Stream.generate(()->new…(…).limit(…)
将创建n个不同的对象。
Stream<Manager> managerStream = Stream.generate(() -> new Manager(...)).limit(10);
Stream<Employee> employeeStream = Stream.generate(() -> new Employee(...)).limit(10);
return Stream.concat(managerStream, employeeStream).collect(Collectors.toList());