【java学习之路】(java SE篇)(练习)集合练习:经典例题

第一题:世界杯问题

利用Map,完成下面的功能:
从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该年没有举办世界杯,则输出:没有举办世界杯。

历届世界杯冠军
届数 举办年份 冠军
第一届1930年 乌拉圭
第二届 1934年 意大利
第三届 1938年 意大利
第四届 1950年 乌拉圭
第五届 1954年 西德
第六届 1958年 巴西
第七届 1962年 巴西
第八届 1966年 英格兰
第九届 1970年 巴西
第十届 1974年 西德
第十一届 1978年 阿根廷
第十二届 1982年 意大利
第十三届 1986年 阿根廷
第十四届 1990年 西德
第十五届 1994年 巴西
第十六届 1998年 法国
第十七届 2002年 巴西
第十八届 2006年 意大利
第十九届 2010年 西班牙
第二十届 2014年 德国
第二十一届 2018年 法国

在原有世界杯Map 的基础上,增加如下功能:
在这里插入图片描述
在这里插入图片描述
思路

  1. 根据题目要求我们要先将数据输入
  2. 通过containsKey和containValue两个方法来确定集合中是否有我们需要的数据
  3. 打印即可

代码实现

package Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Hw {

    public static void main(String[] args) {


        Map<String, String> map=new TreeMap<>();

        map.put("1930", "乌拉圭");
        map.put("1934", "意大利");
        map.put("1938", "意大利");
        map.put("1950", "乌拉圭");
        map.put("1954", "西德");
        map.put("1958", "巴西");
        map.put("1962", "巴西");
        map.put("1966", "英格兰");
        map.put("1970", "巴西");
        map.put("1974", "西德");
        map.put("1978", "阿根廷");
        map.put("1982", "意大利");
        map.put("1986", "阿根廷");
        map.put("1990", "西德");
        map.put("1994", "巴西");
        map.put("1998", "法国");
        map.put("2002", "巴西");
        map.put("2006", "意大利");
        map.put("2012", "西班牙");
        map.put("2016", "德国");


        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个年份:");
        String str=sc.nextLine();

        if(map.containsKey(str)==false)
        {
            System.out.println("该年没有举办世界杯!");
        }
        else
        {
            System.out.println("该年的世界杯冠军是:"+map.get(str));
        }

        Scanner sc1=new Scanner(System.in);

        System.out.println("请输入球队的名字:");

        String str1=sc1.nextLine();

        if(map.containsValue(str1)==true)
        {
            System.out.println(str1+"夺冠的年份有:");
            for(String ss:map.keySet())
            {
                if(map.get(ss).contains(str1))
                {
                    System.out.print(" ,"+ss);
                }
            }
        }
    }

}

第二题:字母出现了多少次

有这样一个字符串"babcabcdaebcdeaa", 统计字符串中每一个字母出现的次数.
要求结果:{a=5,b=4,c=3,d=2,e=2} 要考虑字符串内容是可变的

代码实现

package Map;

import java.util.*;

public class Hw {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] ch = str.toCharArray();

        Map<Character,Integer> treeMap = new TreeMap<>();

        for(Character i : ch){
            Integer value = treeMap.get(i);
            if(value==null){
                treeMap.put(i, 1);
            }else {
                value++;
                treeMap.put(i,value);
            }
        }

        System.out.println(treeMap);
        //以下使用迭代器,纯属学了新东西手痒,不想看可以直接略过
        //作用等效System.out.println(treeMap);
        
//        Set<Map.Entry<Character, Integer>> entries = treeMap.entrySet();
//        Iterator<Map.Entry<Character, Integer>> iterator = entries.iterator();
//        while (iterator.hasNext()){
//            Map.Entry<Character, Integer> next = iterator.next();
//            System.out.println(next.getKey()+" = "+next.getValue());
//        }
    }

}

运行截图
在这里插入图片描述

题目三

有2个数组
第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省]
第二个数组为:[哈尔滨,杭州,南昌,广州,福州]
将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。
如{黑龙江省=哈尔滨, 浙江省=杭州, …}。

代码实现

package Map;

import java.util.*;

public class Hw {

    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        String[] a={"河南省","浙江省","江西省","广东省","福建省"};
        String[] b={"郑州","杭州","南昌","广州","福州"};

        for(int i=0;i<a.length;i++){
            map.put(a[i],b[i]);
        }

        System.out.println(map);
    }

}

运行截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值