将ArrayList复制到相同和子类型的ArrayLists?

时间:2014-11-23 02:49:24

标签: java arraylist

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

如果orderProcessor只有1个订单,那么它永远不会被添加到你的coumputerPart arrayList,因为我不会少于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)); 
}

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

答案 1 :(得分:0)

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

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