Map中key值问题

最近用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值查询的,所以操作失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值