Я хочу вызвать другую функцию и не хочу менять мой список.Но когда я вызываю функцию каждый раз, когда мой массив меняется.Вот мой фрагмент кода:
private ArrayList<LeftPanelObject> addAllNestingGroup(LinkedHashMap<String, ArrayList<LeftPanelObject>> rowGroupDataNesting) {
ArrayList<LeftPanelObject> l1= new ArrayList<>();
LeftPanelObject obj= new LeftPanelObject();
for(String key:rowGroupDataNesting.keySet()){
ArrayList<LeftPanelObject> rowData= new ArrayList<LeftPanelObject>();
ArrayList<LeftPanelObject> rowDataB= new ArrayList<LeftPanelObject>();
rowDataB=(ArrayList<LeftPanelObject>) rowGroupDataNesting.get(key).clone();
rowData.addAll(rowDataB);
obj=getNestingOfObj(obj,rowData,rowData.size(),rowData.size());
}
l1.add(obj);
return l1;
}
// здесь я изменяю структуру // leftpanelObject - это мой базовый объект, содержащий собственную ссылку для вложения для уровня N
private LeftPanelObject getNestingOfObj(LeftPanelObject obj,
final ArrayList<LeftPanelObject> rowData1,int size,int actualSize) {
ArrayList<LeftPanelObject> rowData=new ArrayList<LeftPanelObject>(rowData1);
int i=actualSize-size;
if(i<actualSize){
if(i==0){
obj=rowData.get(i);
obj=getNestingOfObj(obj,(ArrayList<LeftPanelObject>) rowData.clone(),size-1,actualSize);
}else{
if(obj.getLevel()==null){
obj.setGroupId(-1);
obj.setRowId(-1);
obj.setNestingLevel(-1);
ArrayList<LeftPanelObject> temp=new ArrayList<>();
temp.add(getNestingOfObj(rowData.get(i),(ArrayList<LeftPanelObject>) rowData.clone(),size-1,actualSize));
obj.setLevel(temp);
}else if(obj.getLevel().isEmpty()){
obj.setGroupId(-1);
obj.setRowId(-1);
obj.setNestingLevel(-1);
ArrayList<LeftPanelObject> temp=new ArrayList<>();
temp.add(getNestingOfObj(rowData.get(i),(ArrayList<LeftPanelObject>) rowData.clone(),size-1,actualSize));
obj.setLevel(temp);
}else{
for(int j=0;j<obj.getLevel().size();j++)
getNestingOfObj(obj.getLevel().get(j),(ArrayList<LeftPanelObject>) rowData.clone(),size,actualSize);
}
}
}else{
return obj;
}
return obj;
}