是否有可能在增强的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..
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 33
是否有可能在增强的for循环中找到当前索引?
不.如果您需要索引,我建议您使用普通的for循环.
但是,在这种情况下,您实际上似乎不需要索引.除非你正在处理一些非常奇怪的列表类型,否则你可以使用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;
}
Run Code Online (Sandbox Code Playgroud)
小智 13
是的,在for语句之前使用计数器.因此:
int i = 0;
for (int s : ss)
{
// Some Code
System.out.println(i);
i++;
}
Run Code Online (Sandbox Code Playgroud)
小智 11
是否有可能在增强的for循环中找到当前索引?
要获取索引,您可以使用List.indexOf(object).
我已经使用这些技术来获取列表中当前对象的索引.例如,您在上面给出的,可以使用两种方式完成删除.
Run Code Online (Sandbox Code Playgroud)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.. } } } }
Run Code Online (Sandbox Code Playgroud)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.. } } } }
| 归档时间: |
|
| 查看次数: |
34292 次 |
| 最近记录: |