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