Подтвердить что ты не робот

Можно ли найти текущий индекс в расширенном цикле?

Можно ли найти текущий индекс в расширенном цикле? Если да, то как?

Я знаю, что мы можем проверить его с помощью дополнительной переменной. Но есть ли другой способ.

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..
            }
        }
    }
}
4b9b3361

Ответ 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++;
}