带Locate的ArrayList中的Java ForEach
概述: 我使用for each循环,我很好奇是否需要将它们替换为常规带Locate的ArrayList中的Java ForEach,java,for-loop,arraylist,foreach,Java,For Loop,Arraylist,Foreach,概述: 我使用for each循环,我很好奇是否需要将它们替换为常规for循环,或者是否有方法在ArrayList中进行定位,这将相当于跟踪正常for循环中使用的索引 问题的简化版本: 我将for each与对象的ArrayList一起使用。这些对象用于在不同的时间计算不同的值,因此我需要遍历这些项并在不同的时间进行计算。我希望在一个结构中跟踪这些结果,如果我可以在ArrayList中找到项目(而不必在单独的循环中遍历所有内容),我可以很容易地做到这一点。如果有,那么我可以用它来构建我所需要的。
for
循环,或者是否有方法在ArrayList
中进行定位,这将相当于跟踪正常for
循环中使用的索引
问题的简化版本:
我将for each与对象的
ArrayList
一起使用。这些对象用于在不同的时间计算不同的值,因此我需要遍历这些项并在不同的时间进行计算。我希望在一个结构中跟踪这些结果,如果我可以在ArrayList
中找到项目(而不必在单独的循环中遍历所有内容),我可以很容易地做到这一点。如果有,那么我可以用它来构建我所需要的。如果没有,我将用for
循环替换for-each,并获得所需的功能。for-each循环是对集合或数组中的每个元素进行操作的简单方法。如果您想要迭代并跟踪标记,您将需要一个正常的for
循环
但是,一些集合
(例如列表
s)有一个indexOf()
方法,可用于获取索引。那会毁了你的表演
您还可以使用计数器:
int i = 0;
for (Object o : list) {
// Code
i++;
}
每个循环的
是一种对集合或数组中的每个元素进行操作的简单方法。如果您想要迭代并跟踪标记,您将需要一个正常的for
循环
但是,一些集合
(例如列表
s)有一个indexOf()
方法,可用于获取索引。那会毁了你的表演
您还可以使用计数器:
int i = 0;
for (Object o : list) {
// Code
i++;
}
您可以对
-循环使用常规的,但有时这不是一个好主意,例如,如果您处理的是索引中元素检索为O(n)的链表。为什么不直接跟踪索引呢
int index = 0;
for (Element e : list) {
...
index++;
}
我发现它比普通的for
-循环更干净,而且即使您从数组列表
更改为另一种非随机访问的列表类型,它仍将保持高效。您可以使用常规的for
-循环,但有时这不是一个好主意,例如,如果您处理的是索引中元素检索为O(n)的链表。为什么不直接跟踪索引呢
int index = 0;
for (Element e : list) {
...
index++;
}
我发现它比普通的for
-循环更干净,即使您从ArrayList
更改为另一种非随机访问的列表类型,它仍将保持高效。如何找到它们indexOf()
?对于复杂对象,要根据特定成员在列表中定位元素,可以重写参数化类中的equals
方法,以与特定对象(例如id成员)匹配。然后,yourList.contains(新的yourlclass(4))代码>。它不适用于所有情况,但应该很有用。@SotiriosDelimanolis,这正是我所需要的,谢谢。@VenomFangs我不知道您想做什么,但根据列表的大小和列表中对象的类型,indexOf可能是一个相当昂贵的操作。@VenomFangs您还有lastIndexOf
,如果需要获取元素的最后一个匹配项,如何找到它们indexOf()
?对于复杂对象,要根据特定成员在列表中定位元素,可以重写参数化类中的equals
方法,以与特定对象(例如id成员)匹配。然后,yourList.contains(新的yourlclass(4))代码>。它不适用于所有情况,但应该很有用。@SotiriosDelimanolis,这正是我所需要的,谢谢。@VenomFangs我不知道您想做什么,但根据列表的大小和列表中对象的类型,indexOf可能是一个相当昂贵的操作。@VenomFangs您还有lastIndexOf
,如果你需要得到一个元素的最后一次出现,这将以最少的代码更改提供我所需要的,并且将降低操作成本。Thx.@没问题,很高兴我能帮上忙。这可以用最少的代码更改来满足我的需要,而且操作成本也很低。谢谢。没问题,很高兴我能帮忙。