当查询一些数据需要去重复的时候,有很多人想到用map自带的属性去重,因为不允许有相同的key存在,但是可以允许有相同的value存在。
例如:我想得到 手机通讯录 中所有的电话号码和姓名(是去重后的手机号码,不存在相同的两个电话号码)
一部手机里面有 我的电话:152****5398 (2个) 姓名 1 :李白白 姓名 2 :李黑黑
你的电话:188****8888 (1个) 姓名 1 :李蓝蓝
他的电话:199****9999 (10个) 姓名 1 :李赫赫............. 姓名 n :李紫紫 ............. 姓名10:李绿绿.........
每一个电话号码对应一个姓名,如果没有要求的话,当然得到哪一个姓名都一样了,这个可以不用在意。
---------------------------------------------------------------------------------这是一条华丽的分割线------------------------------------------------------------------------------------------------------------------
在保存map的时候保存格式为
这样放在map里面key是不会重复的,
那么怎么获取到去重后的key,和对应的Value值呢?
因为我们不知道key是什么,所有不能直接通过map.get(key)来得到Value
如果想通过key获取Value的值,那么可以在while的时候把key保存到一个数组里面
// 1,声明一个HashMap,用来存放
number = numberData[j];
// 这里则可以通过map.get(key)来获取每个对应的名字userName = (String) map.get(numberData[j]);
System.out.println("number:" + numberData[j] + "\t userName:"去重后结果:
number:188****8888 userName:李蓝蓝
number:152****5398 userName:李黑黑
number:199****9999 userName:李绿绿