繁体   English   中英

Java - 如何迭代/遍历对象的嵌套列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM