JAVA,在 treemap 中想要更改对象中的值?
JAVA, in treemap want to change value, in object?
因此,我将对象 class 声明为 TreeMap 值。
public class Info {
String name;
String pName;// 부서이름
String psw;//관리자비번
public Info(String name,String pName, String psw){
this.name = name;
this.pName=pName;
this.psw=psw;
}
public Info(String name,String psw){
this.psw=psw;
}
public Info(String name){
this.name=name;
}
}
public class menu {
Scanner sc = new Scanner(System.in);
static TreeMap<String, Info> map = new TreeMap<String, Info>();
public menu() {// constructor
map.put("admin", new Info("admin","1234"));// initialize root
}
private void adminChangePsw() {
System.out.print("new password :");
String data = sc.next();
map.replace(admin, <value>);// howww?
}
我想更改管理员密码,我尝试在 class 信息下添加以下代码,
public Info(String psw){
this.psw=psw;
}
但是这段代码也有String类型,所以我猜我不能用它
public Info(String name){
this.name=name;
}
经过几次尝试,发现我现在需要的是replace(K,V),
但我不知道如果值是 Object Class.
怎么办
public void setPsw(String data){
psw=data;
}
map.replace("admin",map.get("admin").setPsw(data));
这个我也试过了(笑),当然不行..
有哪位大侠指点一下,谢谢:>
任何集合只包含对对象的引用。不是对象本身。当您添加一个 value/elment 时,您所做的就是将对该对象的引用添加到集合中。
这意味着当您更新一个可变对象时,您不需要将它放回集合中。
map.get("admin").setPsw(data);
这会获取对 Info
的引用并对其调用 setPsw
。
注意:如果你有一个不可变的值并且你得到了一个新值,你必须替换它。
例如说你有
Map<String, Integer> map = ....
map.put("admin", map.get("admin") + 1); // the + 1 creates a new Integer reference.
顺便说一句,在 Java 8 你可以做到
map.compute("admin", (k, v) -> v == null ? 1 : v + 1);
因此,我将对象 class 声明为 TreeMap 值。
public class Info {
String name;
String pName;// 부서이름
String psw;//관리자비번
public Info(String name,String pName, String psw){
this.name = name;
this.pName=pName;
this.psw=psw;
}
public Info(String name,String psw){
this.psw=psw;
}
public Info(String name){
this.name=name;
}
}
public class menu {
Scanner sc = new Scanner(System.in);
static TreeMap<String, Info> map = new TreeMap<String, Info>();
public menu() {// constructor
map.put("admin", new Info("admin","1234"));// initialize root
}
private void adminChangePsw() {
System.out.print("new password :");
String data = sc.next();
map.replace(admin, <value>);// howww?
}
我想更改管理员密码,我尝试在 class 信息下添加以下代码,
public Info(String psw){
this.psw=psw;
}
但是这段代码也有String类型,所以我猜我不能用它
public Info(String name){
this.name=name;
}
经过几次尝试,发现我现在需要的是replace(K,V), 但我不知道如果值是 Object Class.
怎么办public void setPsw(String data){
psw=data;
}
map.replace("admin",map.get("admin").setPsw(data));
这个我也试过了(笑),当然不行..
有哪位大侠指点一下,谢谢:>
任何集合只包含对对象的引用。不是对象本身。当您添加一个 value/elment 时,您所做的就是将对该对象的引用添加到集合中。
这意味着当您更新一个可变对象时,您不需要将它放回集合中。
map.get("admin").setPsw(data);
这会获取对 Info
的引用并对其调用 setPsw
。
注意:如果你有一个不可变的值并且你得到了一个新值,你必须替换它。
例如说你有
Map<String, Integer> map = ....
map.put("admin", map.get("admin") + 1); // the + 1 creates a new Integer reference.
顺便说一句,在 Java 8 你可以做到
map.compute("admin", (k, v) -> v == null ? 1 : v + 1);