我编写了以下代码,将一个键与一个字符串列表相关联。当我显示它时,键“ 2”的列表值将替换为键“ 4”的值。不应为“ 2” '指向它映射到的值?
Map<Integer,List<String>>hm=new TreeMap<Integer,List<String>>();
List<String>l=new ArrayList<String>();
l.add("tree");
l.add("tyre");
hm.put(2, l);
l.clear();
l.add("treaaae");
l.add("tyret");
l.add("treeeqqq");
l.add("tyreqww");
hm.put(4, l);
答案 0 :(得分:0)
问题是您一直使用列表l
,因此实际上项目2和4都指向同一列表。
这将起作用:
Map<Integer,List<String>>hm=new TreeMap<Integer,List<String>>();
List<String>l=new ArrayList<String>();
l.add("tree");
l.add("tyre");
hm.put(2, l);
List<String>m=new ArrayList<String>();
m.add("treaaae");
m.add("tyret");
m.add("treeeqqq");
m.add("tyreqww");
hm.put(4, m);