Java ArrayList属性更改

时间:2015-01-12 14:36:42

标签: java arraylist

我有一个类型为CatalogHierarchy的arraylist对象catalogHierarchy。

catalogHieriarchy对象有三个元素。每个元素都有两个属性,如headerName和hierarchyList。 hierarchyList元素包含多个ProductHierarchy类型的元素。

我必须根据headerName将属性值设置为Y.

我面临的问题是,我只对headerName包含文本Hierarchy的元素进行更改。但是在迭代之后,为cloneList对象的所有其他两个元素设置了catalogHierarchyFlag。

有谁可以帮我解决这个问题。

ArrayList<CatalogHierarchy> catalogHieriarchy = ... //values from database
List<CatalogHierarchy> cloneList = (ArrayList)catalogHieriarchy.clone();
for(int a=0;a<cloneList.size();a++){
    if(cloneList.get(a).getHeaderName().contains("Hierarchy")){
        List<ProductHierarchy> catalogHier = cloneList.get(a).getHierarchy();
        for(int i = 0 ; i < catalogHier.size() ; i++) {
            catalogHier.get(i).setCatalogHierarchyFlag("y");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

阅读深拷贝和浅拷贝。看起来如果您将对象与==运算符进行比较,它将返回true,表示对象共享相同的引用。如果要创建Object的独立副本(一个不共享相同引用但具有相同字段值的副本),则必须重新实现clone()方法或提供另一种方法。请参阅java文档。