如何创建包含 N 个对象的列表?
2022-09-01 16:20:58
我正在尝试创建具有n个元素的对象列表。我试图以最java 8的方式做到这一点。类似于这里为c#提出的问题:创建N个对象并将它们添加到列表中
像这样:
List <Objects> getList(int numOfElements)
{
}
我正在尝试创建具有n个元素的对象列表。我试图以最java 8的方式做到这一点。类似于这里为c#提出的问题:创建N个对象并将它们添加到列表中
像这样:
List <Objects> getList(int numOfElements)
{
}
如果我答对了你的问题:
List <Object> getList(int numOfElements){
return IntStream.range(0, numOfElements)
.mapToObj(Object::new) // or x -> new Object(x).. or any other constructor
.collect(Collectors.toList());
}
如果你想要相同的对象 n 次:
Collections.nCopies(n, T)
您可以与对构造函数的引用结合使用,然后用于指定应构造的构造数:Stream.generate(Supplier<T>)
Stream.limit(long)
Stream.generate(Objects::new).limit(numOfElements).collect(Collectors.toList());
至少对我来说,这比使用for迭代更具有可读性,并且比使用for迭代更清晰地说明了意图,例如Alberto Trindade Tavares所建议的那样。IntStream
如果您想要在复杂性和内存使用方面表现更好的内容,请将结果大小传递给 :Stream.collect(Collector<? super T,A,R>)
Stream.generate(Objects::new).limit(numOfElements).collect(Collectors.toCollection(() -> new ArrayList<>(numOfElements)));