Можно ли найти текущий индекс в расширенном цикле?
Можно ли найти текущий индекс в расширенном цикле? Если да, то как?
Я знаю, что мы можем проверить его с помощью дополнительной переменной. Но есть ли другой способ.
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..
}
}
}
}
Ответы
Ответ 1
Можно ли найти текущий индекс в расширенном для цикла?
Нет. Если вам нужен индекс, я предлагаю вам использовать обычный для цикла.
Однако вам действительно не нужен индекс в этой ситуации. Если вы не имеете дело с каким-то действительно странным типом списка, вы можете пойти с Iterator
и использовать метод Iterator.remove()
, например:
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;
}
Ответ 2
Можно ли найти текущий индекс в расширенном для цикла?
Для получения индекса вы можете использовать List.indexOf(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..
}
}
}
}
- Использование 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..
}
}
}
}
Ответ 3
Да, используйте счетчик перед оператором for.
как таковой:
int i = 0;
for (int s : ss)
{
// Some Code
System.out.println(i);
i++;
}