集合小实验

利用Map,完成下面的功能:

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。
附:世界杯冠军以及对应的夺冠年份,请参考本章附录。
附录 1.历届世界杯冠军

届数 举办年份 举办地点 冠军
第一届 1930年 乌拉圭 乌拉圭
第二届 1934年 意大利 意大利
第三届 1938年 法国 意大利
第四届 1950年 巴西 乌拉圭
第五届 1954年 瑞士 西德
第六届 1958年 瑞典 巴西
第七届 1962年 智利 巴西
第八届 1966年 英格兰 英格兰
第九届 1970年 墨西哥 巴西
第十届 1974年 前西德 西德
第十一届 1978年 阿根廷 阿根廷
第十二届 1982年 西班牙 意大利
第十三届 1986年 墨西哥 阿根廷
第十四届 1990年 意大利 西德
第十五届 1994年 美国 巴西
第十六届 1998年 法国 法国
第十七届 2002年 韩日 巴西
第十八届 2006年 德国 意大利
第十九届 2010年 南非 西班牙
第二十届 2014年 巴西 德国

(Map)在原有世界杯Map 的基础上,增加如下功能: 读入一支球队的名字,输出该球队夺冠的年份列表。 例如,读入“巴西”,应当输出 1958 1962 1970 1994 2002 读入“荷兰”,应当输出 没有获得过世界杯
效果如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1916f5f61ca4f0ca1c5b914652f19be.png

public class Test5 {
    public static void main(String[] args) {
    //创建HashMap集合
        Map<String, String> mp = new HashMap<>();
        mp.put("1930", "乌拉圭");
        mp.put("1934", "意大利");
        mp.put("1938", "意大利");
        mp.put("1950", "乌拉圭");
        mp.put("1954", "西德");
        mp.put("1958", "巴西");
        mp.put("1962", "巴西");
        mp.put("1966", "英格兰");
        mp.put("1970", "巴西");
        mp.put("1974", "西德");
        mp.put("1978", "阿根廷");
        mp.put("1982", "意大利");
        mp.put("1986", "阿根廷");
        mp.put("1990", "西德");
        mp.put("1994", "巴西");
        mp.put("1998", "法国");
        mp.put("2002", "巴西");
        mp.put("2006", "意大利");
        mp.put("2010", "西班牙");
        mp.put("2014", "德国");
        System.out.println("请输入您要查询的年份:");
        Scanner sc=new Scanner(System.in);
        try{
            int a =sc.nextInt();
            //对输入值进行转换,并与集合中键进行对比,输出所对应的值
            if (mp.containsKey(String.valueOf(a))==true){
                System.out.println(a+"年奥运会的冠军是:"+mp.get(String.valueOf(a
                )));
            }else {
                System.out.println("该年份没有举办奥运会!");
            }
            System.out.println("请输入您要查询的球队:");
            Scanner sr =new Scanner(System.in);
            String sg=sr.nextLine();
            if (mp.containsValue(sg)==false){
                System.out.println("该球队没有获得冠军");
            }else{
                System.out.print(sg+"队夺冠年份是:");
                Set<String>strings =mp.keySet();
                for (String s:strings){
                    if (sg.equals(mp.get(s))){
                        System.out.print(s+" ");
                    }
                }

            }
        }catch (Exception e) {
            System.out.println("请输入正确的年份");
        }
    }
}

上题解题思路:
题目要求使用Map集合,则有键值对,将年份设置为键,夺冠队伍设置为值。这样对用户输入的值与集合的键值进行对比,输出所需要的信息。

集合解题思路:

创建集合时
1.要根据需求是双列还是单列判断
2.若单列,再根据集合元素是否可重复判断
3.再根据是否需要对集合元素进行排序判断
从而选取合适的集合,这样对解决问题有事半功倍的效果。
其次熟练动用各类型集合的特有方法,明白每种集合底层逻辑,更有助于理解各集合特点。
遍历时各种集合遍历方式有所不同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值