发布于2026-07-05 阅读(0)
扫一扫,手机访问
说到数组的周期性循环输出,本质上就是一个数学技巧——取模运算。公式写出来就是 arr[i % arr.length]。这个模式在无限循环遍历、限制轮数的嵌套循环,甚至 Stream 流式限长输出中都能用,适用面非常广。

举个例子,假设有个数组 int[] arr = {1, 2, 3},想按顺序无限循环输出:1→2→3→1→2→3→…,怎么做?只要让索引对数组长度取模就行。
i(从 0 开始递增),对应元素就是 arr[i % arr.length]如果只要循环 N 次(比如每轮输出全部元素,共循环 2 轮),嵌套两层循环是常规操作:
for (int round = 0; round < 2; round++)for (int i = 0; i < arr.length; i++)for (int i = 0; i < totalCount; i++),其中 totalCount 是你想输出的总元素个数有时候需要从第 k 个元素开始循环,比如数组 {1,2,3},k=2 时希望输出 3,1,2,3,1,…。只需调整起始偏移:索引公式变为 arr[(k + i) % arr.length],i 从 0 开始累加。注意 k 要先对长度取模避免越界:k = k % arr.length。例如 arr={1,2,3},k=4 → k%3=1 → 实际从索引 1(元素 2)开始。
Ja va 原生虽然不支持“无限流”,但可以用 Stream.generate() 模拟周期行为。比如 IntStream.iterate(0, i -> (i + 1) % arr.length).mapToObj(i -> arr[i]).limit(10).forEach(System.out::println),能生成前 10 个循环元素。本质还是取模驱动,风格上更函数式。注意 limit 一定要加上,否则会无限执行下去。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8