gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:19:38 31 4
gpt4 key购买 nike

我们有一个旧式的 for 循环来将自定义对象添加到 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;
}

有没有办法使用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;

使用Stream您可以将它们生成为

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());

但是,要交替插入两个流中的元素,这可能是绝对有效的要求,您可以使用 this answer 中建议的解决方案,但使用当前对象定义的 super 类型或修改实现以返回 Object 类型 Stream。 (老实说,尽管可以选择,我更喜欢前者。)

关于java - For 循环将自定义对象添加到 arraylist n 次 - Java8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776255/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com