Java ArrayList属性更改
我有一个catalogHierarchy类型的arraylist对象catalogHierarchy CatalogHierarchy对象有三个元素。每个元素都有两个属性,如headerName和hierarchyList。hierarchyList元素包含多个ProductHierarchy类型的元素 我必须根据headerName将属性的值设置为Y 我面临的问题是,我只对headerName包含文本层次结构的元素进行更改。但是在迭代之后,为cloneList对象的所有其他两个元素设置catalogHierarchyFlag 谁能帮我解决这个问题Java ArrayList属性更改,java,arraylist,Java,Arraylist,我有一个catalogHierarchy类型的arraylist对象catalogHierarchy CatalogHierarchy对象有三个元素。每个元素都有两个属性,如headerName和hierarchyList。hierarchyList元素包含多个ProductHierarchy类型的元素 我必须根据headerName将属性的值设置为Y 我面临的问题是,我只对headerName包含文本层次结构的元素进行更改。但是在迭代之后,为cloneList对象的所有其他两个元素设置cata
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没有意见。。