我想知道如何为数组(或其他列表类型)中的每个对象运行特定功能的最简单方法
我的目标是能够创建对象列表,并使每个对象在通过迭代器时运行特定的功能。
我在arraylist上尝试过for循环
for (int i = 0; i < testList.size(); i++)
{
this = textList.get(i);
this.exampleFunction();
}
但这给了我一个“预期变量”错误
答案 0 :(得分:3)
假设您使用的是Java 8+,并且您拥有Collection<TypeInList>
,则可以调用Collection.stream()
并对其进行forEach
。喜欢,
testList.stream().forEach(TypeInList::function);
您当前的方法是尝试用this
做无法完成的事情。它可以像这样
for (int i = 0; i < testList.size(); i++)
{
TypeInList that = testList.get(i); // this is a reserved word.
that.function();
}
或
for (TypeInList x : testList) {
x.function();
}
答案 1 :(得分:0)
有多种方法可以遍历列表,但是我个人最容易找到的是这样的:
假设您的列表包含String对象,例如:
List<String> list = new ArrayList();
list.add("Hello");
list.add("World");
for(String current : list){
System.out.println(current);
}
循环将迭代两次,控制台将输出以下内容:
Hello
World
这种方法不依赖索引(因为您在问题中的使用方式),因此,我发现它很容易用于遍历单个列表。
但是,缺点是如果您要遍历2个单独的列表,则缺少索引会使其变得更加复杂。遍历多个列表的更简单方法是使用传统方法,如下所示:
for(int i=0; i<list.size(); i++){
int x = list1.get(i);
int y = list2.get(i);
}
因此,您的用例确实确定了您可以采用的理想方法。