-7

我有客户列表说该列表将始终有 5 行我必须删除迭代中的最后三行,

for (Customer cust: oh.getCustomer()) {  
// Check the size of order and remove the last three rows                   
}

任何建议如何做到这一点?

4

5 回答 5

2

你需要一个for循环而不是foreach

for (int i = 0; i < oh.getCustomer().size(); i++) {
    if (i >= oh.getCustomer().size()-3) {
        break;
    }
}

(或类似的东西)

或者您可以使用此方法删除最后 3 个项目:http://docs.oracle.com/javase/6/docs/api/java/util/List.html#remove(int)

于 2012-08-30T12:05:48.867 回答
0

很多方法可以做到这一点。

很简单,您知道列表是按索引排序的。

列表总是有 5 行

您知道该列表将始终包含 5 个元素。

那么您不需要使用 for 循环,创建一个newList并从您的存在列表中获取第一个two元素并将其添加到新创建的列表中。

List<Customer> customerList = new ArrayList<Customer>();

customerList.add(oldList.get(0))

customerList.add(oldList.get(1))
于 2012-08-30T12:15:36.957 回答
0

如果您oh.getCustomer()是 a java.util.list,您可以尝试以下操作:

List<Customer> customers = oh.getCustomer();
customers.subList(2, customers.size()).clear();
于 2012-08-30T12:09:49.037 回答
0

如何获取列表的子集?

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html#subList%28int,%20int%29

高温高压

于 2012-08-30T12:07:26.963 回答
0

你的意思是?

List<Customer> customers = oh.getCustomer();
for(int i = -1; i >= -3 && customer.size()>0;i--)
    oh.removeCustomer(customers.get(customer.size() - i));

如果客户是可修改的(实际上不应该如此),您可以这样做。

customers.subList(Math.max(0, customers.size()-3), customers.size()).clear();
于 2012-08-30T12:08:01.190 回答