Java foreach loop: for (Integer i : list) { ... }
foreach, iterator, java
Solution
One way to do that is to use a counter:
ArrayList<Integer> list = new ArrayList<Integer>();
...
int size = list.size();
for (Integer i : list) {
...
if (--size == 0) {
// Last item.
...
}
}
Edit
Anyway, as Tom Hawtin said, it is sometimes better to use the "old" syntax when you need to get the current index information, by using a `for` loop or the `iterator`, as everything you win when using the Java5 syntax will be lost in the loop itself...
for (int i = 0; i < list.size(); i++) {
...
if (i == (list.size() - 1)) {
// Last item...
}
}
or
for (Iterator it = list.iterator(); it.hasNext(); ) {
...
if (!it.hasNext()) {
// Last item...
}
}
Problem
When I use JDK5 like below ``` ArrayList<Integer> list = new ArrayList<Integer>(); for (Integer i : list) { //cannot check if already reached last item } ``` on the other hand if I just use an `Iterator` ``` ArrayList<Integer> list = new ArrayList<Integer>(); for (Iterator i = list.iterator(); i.hasNext();) { //i can check whether this is last item if(i.hasNextItem()){ } } ``` How can I check if I've already reached last item with `for (Integer i : list) {`