Java中如何实现两个ArrayList的交叉遍历操作?
交叉遍历实现方案
核心逻辑非常简单:以第一个ArrayList的长度为遍历上限,每轮循环先取出第一个列表的当前索引元素处理,再判断当前索引是否在第二个列表的有效范围内,如果是就取出第二个列表的对应索引元素处理即可,刚好匹配你说的规则。
完整可运行代码如下:
import java.util.ArrayList; public class CrossTraverseDemo { public static void main(String[] args) { ArrayList<String> first = new ArrayList<>(); first.add("a"); first.add("c"); first.add("e"); ArrayList<String> second = new ArrayList<>(); second.add("b"); second.add("d"); // 核心交叉遍历逻辑 for (int i = 0; i < first.size(); i++) { // 处理第一个列表的当前元素 processItem(first.get(i)); // 索引未超出第二个列表范围时,处理第二个列表的对应元素 if (i < second.size()) { processItem(second.get(i)); } } } // 元素处理逻辑,可根据业务需求修改 private static void processItem(String item) { System.out.println("当前处理元素:" + item); } }
运行后输出顺序为:
当前处理元素:a 当前处理元素:b 当前处理元素:c 当前处理元素:d 当前处理元素:e
完全符合你的预期。
额外说明:
- 时间复杂度为O(n),n为第一个ArrayList的长度,没有额外空间开销,是最优实现
- 适配你给出的「第二个ArrayList元素数量永远比第一个少1」的前提,不需要额外做长度兼容逻辑
- 如果列表存储的是其他类型的元素,修改泛型和
processItem的入参类型即可
内容的提问来源于stack exchange,提问作者Jingjun
相关产品推荐
相关产品推荐

