Java中与C++ std::iota功能等效的无第三方依赖实现方法查询
Java原生实现std::iota功能的无第三方依赖方案
以下几种方案全部基于JDK原生能力实现,无需引入Guava等第三方库,也没有装箱拆箱的额外性能开销:
方案1:Java 8+ 直接用IntStream遍历(无需额外生成数组)
适合只需要遍历序列、不需要持久化存储数组的场景:
import java.util.stream.IntStream; IntStream.range(-4, 6).forEach(value -> { // 此处替换为你的业务逻辑 System.out.println(value); });
IntStream.range是左闭右开规则,传入-4和6刚好生成-4,-3...4,5的10个连续整数,和原C++代码逻辑完全一致。
方案2:Java 8+ 生成int数组
如果需要得到和C++中一致的数组对象,直接在Stream后调用toArray()即可:
import java.util.stream.IntStream; int[] ar = IntStream.range(-4, 6).toArray(); for (int value : ar) { // 业务逻辑 }
方案3:低版本Java兼容实现
如果使用的Java版本低于8,没有Stream能力,可以手动实现填充逻辑:
int[] ar = new int[10]; int startVal = -4; for (int i = 0; i < ar.length; i++) { ar[i] = startVal++; }
你也可以封装成通用工具方法,完全对齐std::iota的调用逻辑:
public class CollectionUtils { /** * 模拟C++ std::iota行为,为数组填充连续递增的整数值 * @param array 待填充的int数组 * @param initialValue 起始值 */ public static void iota(int[] array, int initialValue) { for (int i = 0; i < array.length; i++) { array[i] = initialValue++; } } } // 调用示例 int[] ar = new int[10]; CollectionUtils.iota(ar, -4);
内容的提问来源于stack exchange,提问作者Mizux
相关产品推荐
相关产品推荐

