Re: question
On Sep 25, 8:17 pm, Daniel Moyne <dmo...@tiscali.fr> wrote:
I am building a map with the key as an integer and a list of string as the
value ; basically this is the stripped code :
import java.util.Map;
import java.util.HashMap;
import java.util.TreeMap;
import java.util.ArrayList;
public class map {
public static void main(String args[]) {
ArrayList<String>clonableDataList=new ArrayList<String>();
Map<Integer,ArrayList<String>>clonableDataMap= new
HashMap<Integer,ArrayList<String>>();
for (int i=0;i<3;i++) {
clonableDataList.removeAll(clonableDataList);
clonableDataList.add(Integer.toString(i));
clonableDataList.add(Integer.toString(i+1));
clonableDataMap.put(i,clonableDataList);
System.out.println("key="+Integer.toString(i)+"list="+clonableDataList+"**");
}
for (Map.Entry <Integer,ArrayList<String>>
entry :clonableDataMap.entrySet()) {
ArrayList<String>aa=new ArrayList<String>(entry.getValue());
System.out.println("key="+Integer.toString(entry.getKey())+"list="+entry.getValue()+"**");
}
}}
when I run the code I get this :
key=0list=[0, 1]**
key=1list=[1, 2]**
key=2list=[2, 3]**
[2, 3]
key=2list=[2, 3]**
[2, 3]
key=1list=[2, 3]**
[2, 3]
key=0list=[2, 3]**
so apparently I get all the time the same list "2, 3" for all the the
different keys when printing my map ; what is wrong ?
Thanks.
--
Daniel Moyne
(Nulix)---------------------------------------------------------
Distribution : Ubuntu Feisty \\|||// Machine : x86_64
kernel 2.6.20-16-generic / --- \ ATI Radeon X300
KDE 3.5.7 (' o-o ')
----------------------------------------oOO-(_)-OOo--------------------------
Nothing is wrong, this is normal behaviour...you're always adding the
same clonableDataList to your map, and each new iteration, you remove
all the elements from the clonableDataList. Only the last iteration
(with key 2 and values 2,3) are kept.
You need to create a new clonalbeDataList each iteration, so that each
key in you map will have his own clonableDataList.
I suggest that you replace
clonableDataList.removeAll(clonableDataList); with
clonableDataList= new ArrayList<String>();
Regards
Peter