Map接口与特性_编程找号码,编程找出:对应地址数目最多的邮编号码

来源:互联网 发布:linux free 详解 编辑:程序博客网 时间:2024/04/26 20:28
/**
 * 已知某个Map中存储了地址到邮编的映射:
海淀黄庄 ---> 100086
中发电子城 ---> 100086
中关村海龙 ----> 100088
北京大学 ----> 100080
天安门 ---> 100020
劳动公园 -->100020
北海 ---> 100021

中山公园 --->100020


可以看出,同样的邮编可能对应多个地址。
请编程找出:对应地址数目最多的邮编号码(多个并列第一则都要列出)。
 */
package cn.itcast.map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class SearchPhone {
public static void main(String[] args) {
Map<String, String> map1 = new HashMap<String, String>();
Map<String, Integer> map2 = new HashMap<String, Integer>();

map1.put("海淀黄庄", "100086");
map1.put("中发电子城", "100086");
map1.put("中关村海龙", "100088");
map1.put("北京大学", "100080");
map1.put("天安门", "100020");
map1.put("劳动公园", "100023");
map1.put("北海", "100021");
map1.put("中山公园", "100020");

Iterator iterator = map1.keySet().iterator();

while (iterator.hasNext()) {
String key = (String) iterator.next();
String zip = map1.get(key);

if (map2.get(zip) != null) 
{
int count = (int) map2.get(zip); 
count++;
map2.put(zip, count);
} else {
map2.put(zip, 1); 
}
}
//输出对应邮编出现的次数
System.out.println(map2);

List<String> list = new ArrayList<String>();
int max = 1;
iterator = map2.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();

int weight = map2.get(key);
if (max < weight) {
list.clear(); 
list.add(key);
max = weight;
}
if (max == weight) {
if (!list.contains(key)) {
list.add(key);
}
max = weight;
}
}

System.out.println("对应地址最多的zip:");
for (String value : list) {
System.out.println(value);
}
}

}


0 0
原创粉丝点击