[英]Java - how to iterate / traverse nested list of objects?
我想遍历一个嵌套的对象列表。 reservedOrder 是包含 PlannedOrder 列表的对象列表。
public class PlannedOrder {
private Object name;
private Object price;
private Object quantity;
}
final List<Object> reservedOrders = new ArrayList<Object>();
for (final Iterator iterator = AllOrdersList.iterator(); iterator.hasNext();)
{
if(condition){
final OrderModel orderModel = (OrderModel) iterator.next();
final List<PlannedOrder> plannedOrders = new ArrayList<PlannedOrder>();
final PlannedOrder singleOrder = new PlannedReservationOrder();
singleOrder.setName(orderModel.getName());
singleOrder.setPrice(orderModel.getPrice());
singleOrder.setQuantity(orderModel.getQuantity());
reservedOrders.addAll(plannedOrders);
}
}
有人可以解释为什么在这个嵌套循环中会抛出 java.lang.ClassCastException 吗? 如何使用 for-each / iterator 访问内部列表中的每个 object?
for (final Object order : reservedOrders)
{
final List<PlannedOrder> singleOrder = (List<PlannedOrder>) order;
for (final PlannedOrder plannedReservationOrder : singleOrder)
{
// java.lang.ClassCastException is thrown here $PlannedOrder cannot be cast to java.util.ArrayList
我认为你的问题是这一行:
reservedOrders.addAll(plannedOrders);
您似乎希望将plannedOrders
列表本身添加到reservedOrders
列表中。 但这不是这样做的。 这会将每个元素plannedOrders
添加到reservedOrders
列表中。 我认为你想要的是:
reservedOrders.add(plannedOrders);
这将导致将plannedOrders
列表添加到reservedOrders
列表中,从而为您提供您所期望的嵌套结构。
为什么您没有正确定义reservedOrders
中包含的对象类型? 如果你这样做了,编译器就会捕捉到这个错误,所以你不需要等待运行时错误。 我想你想要的是:
final List<List<PlannedOrder>> reservedOrders = new ArrayList<>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.