当前位置: 首页 > 面试题库 >

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

卜季萌
2023-03-14
问题内容

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

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

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

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


问题答案:

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

从概念上讲:

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

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



 类似资料:
  • 我最近开始检查新的Java8特性。 我遇到过这个迭代器-它对集合进行迭代。 比如,我希望它从第2个值开始,然后迭代到第2个最后一个值。或者类似的东西--或者其他元素。 我要怎么做?

  • 我可以在varArgs上使用或吗?

  • 问题内容: 假设我们尝试将可能引发检查异常的lambda应用于Java 8流: 这不会编译。 一种解决方法是将检查后的异常嵌套在其中,但是这会使以后的异常处理变得复杂,而且很丑陋: 另一种解决方法可能是转换限制功能,以普通的旧的foreach 循环是比较友好的检查的异常。 但是幼稚的方法失败了: 更新资料 为何在的地方贴了一个回答该问题的技巧。作为副答案本身并不能真正回答该问题。我认为这不足以使这

  • 问题内容: 我正在浏览以下代码示例: 我想知道使用Iterator接口的实现而不是使用普通的for-each循环有什么好处? 如果此示例不相关,那么当我们应该使用Iterator时会是一个好的情况吗? 谢谢。 问题答案: 该 for-each循环 与Java 5中引入的,所以它不是那么“老”。 如果只想迭代一个集合,则应为每个循环使用 但是有时“普通的” 迭代器的 方法对于检查 迭代器 是否还有更

  • 本文向大家介绍详谈JS中数组的迭代方法和归并方法,包括了详谈JS中数组的迭代方法和归并方法的使用技巧和注意事项,需要的朋友参考一下 数组的迭代方法 ES5中为数组定义了5个迭代方法。每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响this的值。 传入方法中的函数会介绍三个参数:1.数组项的值 2. 该项在数组的中位值 3. 数组对象本身; every(

  • 本文向大家介绍JS的数组迭代方法,包括了JS的数组迭代方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS的数组迭代方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。