【发布时间】:2014-07-23 23:57:34
【问题描述】:
概述:
我正在使用 for-each 循环,我很好奇是否需要用常规的 for 循环替换它们,或者是否有办法在 ArrayList 中进行定位,这会给我等价的跟踪在正常for 循环中使用的索引。
问题的简化版本:
我将 for-each 与 ArrayList 的对象一起使用。这些对象用于在不同时间计算不同的值,因此我需要遍历这些项目并计算几次不同的时间。我希望在一个结构中跟踪这些结果,如果我可以在ArrayList 中找到项目,我可以轻松做到这一点(无需在单独的循环中遍历所有内容)。如果有,那么我可以用它来构建我需要的东西。如果没有,我会将 for-each 替换为 for 循环并获得我需要的功能。
【问题讨论】:
-
如何找到它们?
indexOf()? -
对于复杂的对象,要定位
List中的元素,基于特定的成员,可以重写参数化类中的equals方法来匹配特定的事物(一个id成员例如)。然后,yourList.contains(new YourClass(4));。它并非适用于所有情况,但应该很有用。 -
@SotiriosDelimanolis,这正是我所需要的,谢谢。
-
@VenomFangs 我不知道你想做什么,但 indexOf 可能是一个相当昂贵的操作,具体取决于列表的大小和列表中对象的类型。
-
@VenomFangs 你也有
lastIndexOf,如果你需要得到一个元素的最后一次出现。
标签: java for-loop arraylist foreach