如何在Java 8中生成给定长度的列表? [英] How to generate a list of given length in Java 8?

查看:374
本文介绍了如何在Java 8中生成给定长度的列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过调用方法x次来创建一个列表(或一般的集合)。在Python中它将是这样的。

I want to create a list (or collection in general) by calling a method x times. In Python it would be something like this.

self.generated = [self.generate() for _ in range(length)]

我尝试在JDK 8中编写类似的代码。

I tried to code something similar in JDK 8.

this.generated = IntStream.range(0, length)
                          .mapToObj(n -> this.generate())
                          .collect(Collectors.toList());

它有效,但不知何故它感觉还不错。有没有更合适的方法呢?

It works, but somehow it doesn't feel allright. Is there a more proper way of doing it?

推荐答案

我不是Python开发人员,所以我可能误解了你的例子,但从中判断Java示例您可能正在寻找类似

I am not Python developer so I may misunderstood your example, but judging from Java example you may be looking for something like

Stream.generate(this::generate).limit(length).collect(Collectors.toList());

但是 Brian Goetz提到你的方法

IntStream.range(0, length).mapToObj(i->...)

将在并行方面表现得更好。

will perform significantly better in parallel.

这篇关于如何在Java 8中生成给定长度的列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆