Chris
Chris

Reputation: 23

Iterate through an list of objects and run a function for each - Java

I'm wondering for the simplest method for how to run a specific function for each object in an array (or other list type)

My goal is to be able create a list of objects, and have each object run a specific function as it passes through the iterator.

I've tried a for loop on an arraylist

for (int i = 0; i < testList.size(); i++)
    {
        this  = textList.get(i);
        this.exampleFunction();
    }

But this gives me a 'Variable expected' error

Upvotes: 0

Views: 5287

Answers (2)

Timothy T.
Timothy T.

Reputation: 1091

There are multiple ways to iterate through a list, but the easiest I personally find is like this:

Assuming that your list contains String objects e.g.:

List<String> list = new ArrayList();
list.add("Hello");
list.add("World");

for(String current : list){
    System.out.println(current);
}

The loop will iterate twice, and console will output the following:

Hello
World

This approach doesn't rely on indexes (as how you're using it in your question), as such I find it easy to use for iterating through a single list.

However the disadvantage is that if you have 2 separate lists that you would like to iterate through, the lack of indexes makes it a bit more complicated. The easier approach for iterating through multiple lists would be using the traditional approach, something like this:

for(int i=0; i<list.size(); i++){
    int x = list1.get(i);
    int y = list2.get(i);
}

As such your use-case really determines the ideal method you can adopt.

Upvotes: 0

Elliott Frisch
Elliott Frisch

Reputation: 201497

Assuming you're using Java 8+, and you have a Collection<TypeInList> you could call Collection.stream() and do a forEach on that. Like,

testList.stream().forEach(TypeInList::function);

Your current approach is trying to do things with this that cannot be done. It could be fixed like,

for (int i = 0; i < testList.size(); i++)
{
    TypeInList that = testList.get(i); // this is a reserved word.
    that.function();
}

or

for (TypeInList x : testList) {
    x.function();
}

Upvotes: 3

Related Questions