我要求使用不同的值插入相同的对象引用,如下所示:
Test.java:
class Test {
private List<String> elements = new ArrayList<String>();
//add some elements and get
public void add(String s) {
this.elements.add(s);
}
public void clear() {
this.elements.clear();
}
}
Map<String, Test> map = new HashMap<String, test>();
Test one = new Test();
one.add("firstelement"); //adds to element list
map.put("first", one);
//clear and add some more elements
one.clear();
one.add("secondelement");
//Add some more elements without creating
map.put("second", one);
现在,在检索时,由于我们在MAP中插入相同的测试参考,我们有以下输出
有没有办法在MAP中使用不同的元素列表重新生成现有的Test对象
map.get("first") //retrieving list with element "Second Element"
map.get("second") //retrieving list with element "Second Element"
无论如何要实现这个目标
答案 0 :(得分:0)
您可能希望将Map
定义为:
Map<String, String> map = new HashMap<String, String>();
并更改您添加的内容
one.add("firstelement");
map.put("first", one.get(0));
这需要get
中的Test
方法:
public String get(int index) {
this.elements.get(index);
}
<强> 修改 强>
如果您希望Map
存储对Test
个对象的引用,请使用Sweeper的答案
如果您希望Map
存储到List
个对象,则可以在重用Test
之前复制该列表:
将此方法添加到Test
:
private List<String> getList() {
return this.elements;
}
并更改您添加的方式:
Map<String, List> map = new HashMap<String, List>();
Test one = new Test();
one.add("firstelement"); //adds to element list
//store a refrence to a copy of elements in map
map.put("first", new ArrayList<String>(one.getList()));
答案 1 :(得分:0)
这个问题并不是很清楚,但我想你想这样做:
map.get("first") //retrieving list with element "firstelement"
map.get("second") //retrieving list with element "secondelement"
为此,您必须创建另一个Test
对象。你应该替换
one.clear();
与
one = new Test();