Java中遍历一个集合时获取另一集合同下标值的实现方法
Java同索引遍历双列表实现方案
完全可以实现,首先要确保两个列表长度一致,否则会出现索引越界异常。以下是几种简洁优雅的实现方式:
1. 基础索引for循环(最直观,可读性最高)
// 先执行长度校验 if (responseList.size() != requestList.size()) { throw new IllegalArgumentException("responseList与requestList长度不匹配"); } for (int i = 0; i < responseList.size(); i++) { responseList.get(i).setPrimarySkills(requestList.get(i).getPrimarySkills()); }
2. 函数式写法(适合JDK8+环境)
if (responseList.size() != requestList.size()) { throw new IllegalArgumentException("responseList与requestList长度不匹配"); } IntStream.range(0, responseList.size()) .forEach(i -> responseList.get(i).setPrimarySkills(requestList.get(i).getPrimarySkills()));
3. 迭代器写法(兼容不支持随机访问的List实现)
如果你的列表是LinkedList这类不支持O(1)索引查询的实现,用迭代器可以避免每次查询索引带来的性能损耗:
Iterator<Response> respIterator = responseList.iterator(); Iterator<Request> reqIterator = requestList.iterator(); while (respIterator.hasNext() && reqIterator.hasNext()) { respIterator.next().setPrimarySkills(reqIterator.next().getPrimarySkills()); } // 可选校验,确保两个列表长度一致 if (respIterator.hasNext() || reqIterator.hasNext()) { throw new IllegalArgumentException("responseList与requestList长度不匹配"); }
注意事项
- 所有实现方案都建议先做长度校验,避免业务逻辑出现异常
- 如果使用索引遍历方式,优先选择
ArrayList等支持随机访问的List实现,性能更高
内容的提问来源于stack exchange,提问作者Nitin Kumar
相关产品推荐
相关产品推荐

