Map接口与特性 编程找号码


题:
已知某个Map中存储了地址到邮编的映射:

海淀黄庄 ---> 100086
中发电子城 ---> 100086
中关村海龙 ----> 100088
北京大学 ----> 100080
天安门 ---> 100020
劳动公园 -->100020
北海 ---> 100021
中山公园 --->100020
...
...

可以看出,同样的邮编可能对应多个地址。
请编程找出:对应地址数目最多的邮编号码(多个并列第一则都要列出)。

源码CountNum.java


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class CountNum {
    public static void main(String[] args) {

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

        Iterator<String> ite = m.values().iterator();

        Map<String, Integer> c =new HashMap<String, Integer>();
        int max = 1;

        while(ite.hasNext()) {
            String item = ite.next();
            if(c.containsKey(item)) {
                c.put(item, c.get(item)+1);
            }
            else {
                c.put(item, 1);
            }
            max = (max<c.get(item))?c.get(item):max;
        }

        for (Iterator<String> ite2 = c.keySet().iterator(); ite2.hasNext();) {
            String key = ite2.next();
            if (c.get(key)==max) {
                System.out.println(key + " appears " + c.get(key) + " times");
            }
        }
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注