Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环将自定义对象添加到arraylist For n次-Java8_Java_For Loop_Java 8_Java Stream - Fatal编程技术网

For循环将自定义对象添加到arraylist For n次-Java8

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

我们有一个旧的循环样式,用于向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.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)

有什么建议吗?

由于没有通用的派生类型,也不需要替换元素,一种方法是简单地创建两种类型元素的
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());