是否可以在增强的 for 循环中找到当前索引?

2022-09-01 01:29:53

是否可以在增强的 for 循环中找到当前索引?如果是这样,如何?

我知道我们可以用一个额外的变量来检查它。但是有没有其他方法。

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

是否可以在增强的 for 循环中找到当前索引?

不。如果你需要索引,我建议你使用一个普通的 for 循环。

但是,在这种情况下,您实际上似乎并不需要索引。除非您正在处理一些非常奇怪的列表类型,否则您可以使用a并使用该方法,如下所示:IteratorIterator.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

是的,在 for 语句之前使用计数器。因此:

int i = 0;
for (int s : ss)
{
   // Some Code
   System.out.println(i);

   i++;
}