Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList属性更改_Java_Arraylist - Fatal编程技术网

Java ArrayList属性更改

Java ArrayList属性更改,java,arraylist,Java,Arraylist,我有一个catalogHierarchy类型的arraylist对象catalogHierarchy CatalogHierarchy对象有三个元素。每个元素都有两个属性,如headerName和hierarchyList。hierarchyList元素包含多个ProductHierarchy类型的元素 我必须根据headerName将属性的值设置为Y 我面临的问题是,我只对headerName包含文本层次结构的元素进行更改。但是在迭代之后,为cloneList对象的所有其他两个元素设置cata

我有一个catalogHierarchy类型的arraylist对象catalogHierarchy

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

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

我面临的问题是,我只对headerName包含文本层次结构的元素进行更改。但是在迭代之后,为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");
        }
    }
}
ArrayList CatalogHierarchy=//来自数据库的值
List cloneList=(ArrayList)CatalogHierarchy.clone();

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

ArrayList CatalogHierarchy=“Vale from DB”
这句话毫无意义。
Object 35; clone
提供了被克隆对象的浅拷贝。您应该避免使用这种方法。使用getHeaderName().equalsIgnoreCase(“层次结构”)如何?Maroun Maroun-我没有编写从DB获取的整个方法调用,而是使用了双引号ESHA9U63AR-问题不在于条件检查。我对contains没有意见。。