我有一个地图对象testMap
,声明为HashMap<String, Test>
。
Test是一个简单的类,其中包含对Object
和两个String
值的引用。
即
public class Test {
private String name;
private String id;
private Object val;
public Test(Object val,String name.String id){
this.val =val;
this.id=id;
this.name = name;
}
我想仅在哈希地图“testMap”中更新“名称”。我怎么能这样做?
答案 0 :(得分:1)
Test test = testMap.get("key");
if (test != null) {
test.name = "new name";
}
答案 1 :(得分:0)
您需要将name
属性的可见性更改为public
或向其添加设置器:
public class Test {
private String name;
private String id;
private Object val;
public Test(Object val,String name, String id){
this.val =val;
this.id = id;
this.name = name;
}
public void setName(String name) {
this.name = name;
}
然后,要更改你的名字,你需要
Test test = testMap.get("key");
if (test != null) {
test.setName("new name");
}
如果您还要更新Map键,则需要
Test test = testMap.remove("oldKey");
if (test != null) {
test.setName("newKey");
test.put("newKey", test);
}
答案 2 :(得分:0)
Test test = testMap.remove("name");
if(test != null)
test.put("newname",test);
答案 3 :(得分:0)
由于名称是私有字段,因此您无法使用Test
的当前实现。您可以将其公开或将getter / setter方法添加到Test
类(当前Test
类似乎完全没用,除非您没有错过某些代码)。
之后,您可以使用必填字段替换所需的Test
实例,或者更新名称。代码:
public class Test {
public String name;
public String id;
public Object val;
public Test(Object val,String name.String id){
this.val =val;
this.id=id;
this.name = name;
}
}
Map<String, Test> testMap = new HashMap<String, Test();
...
Test test = testMap.get(key);
test.name = newName;
testMap.put(key, test);
// or
Test test2 = testMap.get(key);
testMap.put(key, new Test(test2.val, newName, test2.id));