我想通过调用方法x次来创建一个列表(或一般的集合)。在Python中它会是这样的。
self.generated = [self.generate() for _ in range(length)]
我尝试在JDK 8中编写类似的代码。
this.generated = IntStream.range(0, length)
.mapToObj(n -> this.generate())
.collect(Collectors.toList());
它有效,但不知怎的,它感觉还不错。有没有更合适的方法呢?
答案 0 :(得分:8)
我不是Python开发人员,所以我可能误解了你的例子,但从Java示例来看,你可能正在寻找像
这样的东西Stream.generate(this::generate).limit(length).collect(Collectors.toList());
但是Brian Goetz mentioned你的方法
IntStream.range(0, length).mapToObj(i->...)
将在并行方面表现更好。
答案 1 :(得分:2)
不确定这对你有什么好处,但这是达到同样效果的一种方法:
Integer[] arr = new Integer[length];
Arrays.setAll(arr, n -> this.generate());
List<Integer> l = Arrays.asList(arr);