簡體   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