map中 key,value 对换 ,互换,

当查询一些数据需要去重复的时候,有很多人想到用map自带的属性去重,因为不允许有相同的key存在,但是可以允许有相同的value存在。

例如:我想得到 手机通讯录 中所有的电话号码和姓名(是去重后的手机号码,不存在相同的两个电话号码)

一部手机里面有    我的电话:152****5398    (2个)         姓名 1      :李白白                   姓名 2  :李黑黑

  你的电话:188****8888  (1个)         姓名 1       :李蓝蓝    

  他的电话:199****9999   (10个)       姓名  1       :李赫赫.............     姓名 n  :李紫紫 .............  姓名10:李绿绿.........

每一个电话号码对应一个姓名,如果没有要求的话,当然得到哪一个姓名都一样了,这个可以不用在意。

---------------------------------------------------------------------------------这是一条华丽的分割线------------------------------------------------------------------------------------------------------------------

在保存map的时候保存格式为<mobile,username>

这样放在map里面key是不会重复的,

那么怎么获取到去重后的key,和对应的Value值呢?

因为我们不知道key是什么,所有不能直接通过map.get(key)来得到Value

如果想通过key获取Value的值,那么可以在while的时候把key保存到一个数组里面

// 1,声明一个HashMap,用来存放<key,value>
Map<String, Object> map = new HashMap<String, Object>();
map.put("152****5398", "李白白");
map.put("152****5398", "李黑黑");
map.put("188****8888", "李蓝蓝");
map.put("199****9999", "李绿绿");


// 声明一个Set存放map的key
Set set = map.keySet();
Iterator iterator = set.iterator();
String key = null;
int k = 0;
// 在这里声明一个字符串数组,长度为去重后map的长度
String numberData[] = new String[map.size()];
while (iterator.hasNext())
{
key = (String) iterator.next();
// 这里循环保存key到数组
numberData[k] = key;
// 每次循环自加
k++;
}
String number = null;
String userName = null;
int numberDataLength = numberData.length;
// 循环得到的数组,取得数组中保存的key
for (int j = 0; j < numberDataLength; j++)
{
if (map != null)
{
// 这样每次循环得到电话(去重)

number = numberData[j];

// 这里则可以通过map.get(key)来获取每个对应的名字

userName = (String) map.get(numberData[j]);

System.out.println("number:" + numberData[j] + "\t userName:"
+ (String) map.get(numberData[j]));
}
}

去重后结果:

number:188****8888 userName:李蓝蓝

number:152****5398 userName:李黑黑

number:199****9999 userName:李绿绿












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值