当前位置: 首页 > 知识库问答 >
问题:

如何创建一个int[]或集合值0,1,2,..., N在一行中Java使用lambda表达式?

沃博裕
2023-03-14

我想这样做:

int[] seq = new int[N];
for (int i = 0 ; i < N ; i++) {
    seq[i] = i;
}

...我想知道lambda表达式是否可行。

如果它与<code>ArrayList一起工作

共有3个答案

翁昊乾
2023-03-14

位集也可以。尽管没有λ。

BitSet bset = new BitSet(N); // Initial capacity for N bits.
bset.set(0, N); // Set a range to true for 0 upto N-1.
皇甫聪
2023-03-14

从Java 9开始,您可以使用三个参数<code>IntStream.iterate<code>:

int[] seq = IntStream.iterate(0, x -> x < N, x -> x + 1).toArray();

哪里:

IntStream。迭代​(int-seed、IntPredicate-hasNext、IntUnaryOperator-next):

  • 种子 - 初始元素;
  • hasNext - 应用于元素的谓词,以确定流何时必须终止;
  • next - 要应用于前一个元素以生成新元素的函数。
颛孙玉石
2023-03-14

使用IntStream.range()

int[] seq = IntStream.range(0, N).toArray();

IntStream。rangeClosed()如果要包含N

int[] seq = IntStream.rangeClosed(0, N).toArray();
 类似资料:
  • 这个问题有一个关于如何使用多行lambda表达式对List进行排序的答案: 不幸的是,这似乎不适用于原始数组: 如何在Arrays.sort()中使用多行lambda表达式对原始数组进行排序? 我对任何其他方法(不必使用)都很好,只要它使用lambda表达式(没有比较器)。

  • 问题内容: 假设我有一个集合列表,并且我想获得该列表中所有集合的并集。有什么方法可以使用生成器表达式来实现吗?换句话说,我怎么能在列表中创建在所有集合的并集 直接 作为? 问题答案: 只需使用该方法即可。 这适用于任何可迭代的迭代器。

  • 问题内容: 我正在研究使用Beanshell env进行产品自定义挂钩的产品(在Tomcat中运行的Sailpoint IdentityIQ)。我想编写一些代码来解析大型csv文件,并希望利用Java 8 Streams。但是我面对Beanshell env引发错误的问题,尽管我们正在使用Java 8,但无法识别Lambda表达式 有什么方法可以告诉beanshell识别lambda或代码中的转义

  • 问题内容: 我可以通过以下方法轻松地在Scala中实现此目标: 因此,如果我给它{1,2},{3,4},我将返回{1,3},{1,4},{2,3},{2,4} 我希望能够使用流将其转换为java 8。 我有点困难,我希望能够进一步扩展,因为我希望能够从两个以上的列表中生成许多排列的测试样本。 即使使用流,是否也会不可避免地成为一团糟呢?还是我不够用自己? 在意识到我正在寻找笛卡尔积之后,发现了一些

  • 我可以在Scala中通过以下内容轻松实现这一点: 所以如果我给它{1,2},{3,4},我返回{1,3},{1,4},{2,3},{2,4} 我希望能够使用Streams将其转换为Java8。 我有一点困难,我希望能够扩展到更远的地方,因为我希望能够从两个以上的列表中生成许多排列的测试样本。 如何用Java8流制作笛卡尔积?

  • 问题内容: 当我使用Java 8的新语法糖遍历集合时,例如 这不等同于下面的“旧语法”代码段吗? 这是否意味着每次迭代集合时都会在堆上创建一个新的匿名对象?这需要多少堆空间?它对性能有什么影响?这是否意味着在遍历大型多级数据结构时,我宁愿使用旧样式的循环? 问题答案: 它是等效的但不相同。简而言之,如果lambda表达式未捕获值,则它将是单例,可在每次调用时重复使用。 行为没有完全指定。JVM被赋