使用foreach在Java中迭代并行数组的好方法

问题描述

我会用Map我自己。但是请您相信,一对数组在您的情况下很有意义,那么采用一种方法获取两个数组并返回Iterable包装器呢?

从概念上讲:

for (Pair<K,V> p : wrap(list1, list2)) {
    doStuff(p.getKey());
    doStuff(p.getValue());
}

Iterable<Pair<K,V>>包装将隐藏边界检查。

解决方法

我继承了很多代码,这些代码大量使用并行数组来存储键/值对。这样做确实很有意义,但是编写循环访问这些值的循环有点尴尬。我真的很喜欢新的Java
foreach构造,但是似乎没有一种方法可以使用它遍历并行列表。

使用普通for循环,我可以轻松地做到这一点:

for (int i = 0; i < list1.length; ++i) {
    doStuff(list1[i]);
    doStuff(list2[i]);
}

但是我认为这在语义上并不纯净,因为我们没有list2在迭代过程中检查的界限。是否有一些聪明的语法类似于我可以用于并行列表的for-each?