【问题标题】:Equivalent of std::iota in java等价于 java 中的 std::iota
【发布时间】:2021-10-12 13:19:07
【问题描述】:

我想将这个使用 std::iota 的 C++ 代码移植到 Java 中。

std::array<int, 10> ar;
std::iota(ar.begin(), ar.end(), -4);

for(const auto value: ar) {
  ...

这将创建一个由{-4 -3 -2 -1 0 1 2 3 4 5}填充的int数组ar

目前我正在使用以下代码,但我正在寻找更简单的东西(如果可能的话没有第三方):

import com.google.common.collect.ContiguousSet;
import com.google.common.collect.DiscreteDomain;
import com.google.common.collect.Range;
...
ContiguousSet<Integer> ar =
  ContiguousSet.create(
    Range.closedOpen(-4, 6),  
    DiscreteDomain.integers());

for (int value : ar) {
  ...
  System.out.println(value);
}

src: STL std::iota: https://en.cppreference.com/w/cpp/algorithm/iota

【问题讨论】:

  • 为什么投反对票?除非它稍后被编辑,否则它看起来像是一个合法的问题。

标签: java stl


【解决方案1】:

根据 QBrute 我可以使用。

import java.util.stream.IntStream;

int[] ar = IntStream.range(-4, 6).toArray()

for (int value : ar) {
  ...
  System.out.println(value);
}

源代码:https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html

【讨论】:

  • 使用IntStream.range(-4, 6) 会更简单,然后您可以将其收集到一个集合中。它是 Java 内置的,不依赖于 3rd 方库。
  • 基本上我只想填一个List&lt;Integer&gt;int[]
  • List&lt;Integer&gt; l = IntStream.range(-4, 6).boxed().collect(Collectors.toList())int[] array = IntStream.range(-4, 6).toArray()
猜你喜欢
  • 2010-09-25
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 2018-12-16
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多