Map中key值问题

时间:2022-06-10 19:17:38

最近用Map写的电话本,实现增删改查等,电话本有姓名、性别、年龄、电话、QQ、地址属性,我是用name值做的key。但是遇到一个问题,就是修改的时候,修改成功,但是查询的时候出错,比如我把张三修改成了李四,但是我查李四,提示不存在此人,查张三,显示的是刚才修改成功的。

下面是修改的代码:

public void addPhone2(PhoneTXT phoneTXT, String name) {
for (int i = 0; i < phoneTXTs.size(); i++) {

if (phoneTXTs.get(name) != null) {
phoneTXTs.get(name).setName(phoneTXT.getName());
phoneTXTs.get(name).setSex(phoneTXT.getSex());
phoneTXTs.get(name).setTel(phoneTXT.getTel());
phoneTXTs.get(name).setQQ(phoneTXT.getQQ());
phoneTXTs.get(name).setAddress(phoneTXT.getAddress());
}
}
}
其中phoneTXTs是Map集合


下面是查询是否存在该姓名的代码:

public boolean existByName(String name) {
boolean exist = false;
System.out.println(name);
if (phoneTXTs.containsKey(name)) {
System.out.println(phoneTXTs.get(name));
exist = true;
}

return exist;
}

感觉没什么问题

后来我在existByName方法中加了几条输出语句,发现name和getname()不是同一个值,说到这应该明白了,第一个name是key值,第二个getname()是value里面对象的name,所以我在修改的方法中修改的只是value值,并没有修改key值,而在existByName方法中却是用key值查询的,所以操作失败