Reputation: 125
I want to write a method in java which gives ArrayList<ArrayList<Integer>>
(say result) from ArrayList<ArrayList<Integer>>
(say original) without changing the original one. So I have to first store original in some variable but i dont find a proper or easy way
for ex. I want to remove a certain object (Integer) from original this is how i am coding
static ArrayList<ArrayList<Integer>> rmv(Integer a,ArrayList<ArrayList<Integer>> original){
ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
//storing original to other variable
for(int i=0;i<original.size();i++){
ArrayList<Integer> temp=new ArrayList<Integer>();
for(int j=0;j<original.get(i).size();j++){
temp.add(original.get(i).get(j));
}
result.add(temp);
}
// not so important here
for(int i=0;i<b.size();i++){
result.get(i).remove(a);
}
return result;
}
plz suggest me if there is any shortcut method
Upvotes: 0
Views: 136
Reputation: 2573
The following is close to the best that you can do in java:
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
for(ArrayList<Integer> list : result){
result.add(list.clone());
}
Also for future reference, what you are doing is called a "deep copy". Search that term for more info.
Upvotes: 0
Reputation: 393771
You can use addAll :
ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
for(int i=0;i<original.size();i++){
ArrayList<Integer> temp=new ArrayList<Integer>();
temp.addAll(original.get(i));
result.add(temp);
}
Alternately, you can use clone :
ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();
for(int i=0;i<original.size();i++){
ArrayList<Integer> temp = (ArrayList<Integer>) original.get(i).clone();
result.add(temp);
}
Upvotes: 1