Is it possible to find the present index in an enhanced for loop? [duplicate]
Is it possible to find the present index in an enhanced for loop? If so how?
I am aware we can check it with an extra variable. But is there any other way.
public boolean cancelTicket(Flight f, Customer c) {
开发者_开发问答 List<BookingDetails> l = c.getBooking();
if (l.size() < 0) {
return false;
} else {
for (BookingDetails bd : l) {
if(bd.getFlight()==f){
l.remove() // Index here..
}
}
}
}
Is it possible to find the present index in an enhanced for loop?
No. If you need the index, I suggest you use an ordinary for-loop.
However, you don't actually seem to need the index in this situation. Unless you're dealing with some really strange type of list, you could go with an Iterator
and use the Iterator.remove()
method, like this:
public boolean cancelTicket(Flight f, Customer c) {
Iterator<BookingDetails> bdIter = c.getBooking().iterator();
if (!bdIter.hasNext())
return false;
while (bdIter.hasNext())
if (bdIter.next().getFlight() == f)
bdIter.remove();
return true;
}
Yes, Use a counter before the for statement. as such:
int i = 0;
for (int s : ss)
{
// Some Code
System.out.println(i);
i++;
}
Is it possible to find the present index in an enhanced for loop?
For getting the index, you can use List.indexOf(object)
.
I have used these techniques for getting index of current object in a list. For example you given above, the removal can be done using two ways.
- Using object instance to remove object.
public boolean cancelTicket(Flight f, Customer c) { List<BookingDetails> l = c.getBooking(); if (l.size() < 0) { return false; } else { for (BookingDetails bd : l) { if(bd.getFlight()==f){ l.remove(bd) // Object Instance here.. } } } }
- Using List.indexOf(index)
public boolean cancelTicket(Flight f, Customer c) { List<BookingDetails> l = c.getBooking(); if (l.size() < 0) { return false; } else { for (BookingDetails bd : l) { if(bd.getFlight()==f){ l.remove(l.indexOf(bd)) // index Number here.. } } } }
精彩评论