【问题标题】:Copying ArrayList to same and subtype ArrayLists?将 ArrayList 复制到相同的子类型 ArrayLists?
【发布时间】:2014-11-23 02:49:24
【问题描述】:

我想将 Product 类型的添加不同的 arrayLists 添加到 orderProcessor。这些不同的 arrayLists 具有 Products 类型的对象及其子类。这段代码是好的还是有错误?

for(int i = 0; i < genericOrder.size(); i++) {
    orderProcessor.add(genericOrder.get(I));
    System.out.println(orderProcessor.get(i));
}

另外,后来我明确地将这些添加到不同类型的不同arrayLists中。但是,这些类型仍然是 Product 的子类型,例如 ComputerPart 对象。我这样做是为了在不同的列表中有不同的类型。我认为它不起作用,因为我没有得到任何输出。是什么导致我的错误?

for (int i = 1; i < orderProcessor.size(); i++){
    computerPart.add((ComputerPart) orderProcessor.get(I)); 
}

【问题讨论】:

  • orderProcessor.addAll(genericOrder)?
  • 我试过了。这似乎没有什么不同。有区别吗?我害怕像你一样添加,我可能会覆盖它们。虽然这是我问题的第二部分,但我真的不清楚@MadProgrammer

标签: java arraylist


【解决方案1】:

在你的第二个 for 循环中,你有:

for (int i = 1; i < orderProcessor.size(); i++){
computerPart.add((ComputerPart) orderProcessor.get(I)); 
}

如果 orderProcessor 中只有 1 个订单,那么它永远不会被添加到您的计算机零件数组列表中,因为 i 不会小于 orderProcessor.size()。您还可以检查子类的类型以将它们添加到正确的 ArrayList 中。像这样(使用 int i = 0 修复):

for (int i = 0; i < orderProcessor.size(); i++){
    if (orderProcessor.elementAt(i) instanceof ComputerPart)
        computerPart.add((ComputerPart) orderProcessor.get(I)); 
}

*(我会对此发表评论,但我没有足够的代表点......)

【讨论】:

  • 哈哈哈业余错误。已更正!
【解决方案2】:
    for (int i=0 ; i< orderProcessor.size();i++){
        if(orderProcessor.get(i) instanceof ComputerPart )
        computerPart.add( orderProcessor.get(i));
        else;
    }

我认为以上内容应该适用于我想要做的事情?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2015-09-29
    • 2014-07-02
    • 2015-05-25
    • 2013-10-24
    • 2012-11-06
    相关资源
    最近更新 更多