集合练习(二)

Map基本操作

创建一个Map,完成以下操作:

  • 将我国省份和其简称存到 Map 集合中
  • 将省份名称中包含"江"的省份从集合中删除
  • 遍历输出集合元素
package com.kfm.List.Map.Exar;/*
@CreatTime:2023-09-06   20:09
*/

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

public class Province {
    public static void main(String[] args) {
        Map<String,String> provinceMap = new HashMap<>();
        provinceMap.put("北京", "京");
        provinceMap.put("上海", "沪");
        provinceMap.put("天津", "津");
        provinceMap.put("重庆", "渝");
        provinceMap.put("河北", "冀");
        provinceMap.put("山西", "晋");
        provinceMap.put("辽宁", "辽");
        provinceMap.put("吉林", "吉");
        provinceMap.put("黑龙江", "黑");
        provinceMap.put("江苏", "苏");
        provinceMap.put("浙江", "浙");
        provinceMap.put("安徽", "皖");
        provinceMap.put("福建", "闽");
        provinceMap.put("江西", "赣");
        provinceMap.put("山东", "鲁");
        provinceMap.put("河南", "豫");
        provinceMap.put("湖北", "鄂");
        provinceMap.put("湖南", "湘");
        provinceMap.put("广东", "粤");
        provinceMap.put("海南", "琼");
        provinceMap.put("四川", "川");
        provinceMap.put("贵州", "贵");
        provinceMap.put("云南", "云");
        provinceMap.put("陕西", "陕");
        provinceMap.put("甘肃", "甘");
        provinceMap.put("青海", "青");
        provinceMap.put("台湾", "台");
        provinceMap.put("内蒙古", "蒙");
        provinceMap.put("广西", "桂");
        provinceMap.put("西藏", "藏");
        provinceMap.put("宁夏", "宁");
        provinceMap.put("新疆", "新");
        provinceMap.put("香港", "港");
        provinceMap.put("澳门", "澳");


        Set<Map.Entry<String,String>> entries = provinceMap.entrySet();
        Iterator<Map.Entry<String,String>> iterator = entries.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> next = iterator.next();
            if (next.getKey().contains("江")) {
                iterator.remove();
            } else {
                System.out.println(next.getKey() + ":" + next.getValue());

            }

        }
    }
}

统计数量

输入一个字符串,统计字符串中每个字符出现的次数并输出

public class Count1 {
    public static void main(String[] args) {
        String str = "aabbccddeeffggavx";
        //exar1(str);
        exar2(str);
        //exar3(str);

    }
        //字符串处理

        public static void exar2(String str){
            String[] charArray = str.split("");
            List<String> list = Arrays.asList(charArray);
            HashSet set = new HashSet<>(list);
            while (str.length()>0){
                //截取第一个字符
                String c = str.substring(0,1);
                //如果出现第一个字符,全部删掉
                String s = str.replaceAll(c,"");

                //计算出现的次数
                int count = str.length()-s.length();
                System.out.println(c + "出现了" + count + "次");


                str = s;
            }


        }
}

摩尔斯密码

国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:

‘a’ 对应 “.-” ,
‘b’ 对应 “-…” ,
‘c’ 对应 “-.-.” ,以此类推。
为了方便,所有 26 个英文字母的摩尔斯密码表如下:

[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]

给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。

例如,“cab” 可以写成 “-.-…–…” ,(即 “-.-.” + “.-” + “-…” 字符串的结合)。我们将这样一个连接过程称作 单词翻译 。
对 words 中所有单词进行单词翻译,返回不同 单词翻译 的数量

示例 1:

输入: words = ["gin", "zen", "gig", "msg"]
输出: 2
解释: 
各单词翻译如下:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."

共有 2 种不同翻译, "--...-." 和 "--...--."

示例 2:

输入:words = ["a"]
输出:1

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 12
  • words[i] 由小写英文字母组成
package com.kfm.List.Map.Exar;/*
@CreatTime:2023-09-06   21:44
*/

import java.util.*;

public class MorseCode {
    public static void main(String[] args) {
        input(args);

    }

    public static void input(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入字符串数组的长度: ");
        int length = scanner.nextInt();
        scanner.nextLine(); // 消耗换行符

        String[] words = new String[length];
        for (int i = 0; i < length; i++) {
            System.out.print("请输入第 " + (i + 1) + " 个单词: ");
            words[i] = scanner.nextLine();
        }
        System.out.println(Arrays.toString(words));
        morseCode(words);


    }

    public static void morseCode(String[] words) {
        Map<Character, String> morseCodeMap = new HashMap<>();

        // 存储字母 a 到 z 的摩尔斯密码
        morseCodeMap.put('a', ".-");
        morseCodeMap.put('b', "-...");
        morseCodeMap.put('c', "-.-.");
        morseCodeMap.put('d', "-..");
        morseCodeMap.put('e', ".");
        morseCodeMap.put('f', "..-.");
        morseCodeMap.put('g', "--.");
        morseCodeMap.put('h', "....");
        morseCodeMap.put('i', "..");
        morseCodeMap.put('j', ".---");
        morseCodeMap.put('k', "-.-");
        morseCodeMap.put('l', ".-..");
        morseCodeMap.put('m', "--");
        morseCodeMap.put('n', "-.");
        morseCodeMap.put('o', "---");
        morseCodeMap.put('p', ".--.");
        morseCodeMap.put('q', "--.-");
        morseCodeMap.put('r', ".-.");
        morseCodeMap.put('s', "...");
        morseCodeMap.put('t', "-");
        morseCodeMap.put('u', "..-");
        morseCodeMap.put('v', "...-");
        morseCodeMap.put('w', ".--");
        morseCodeMap.put('x', "-..-");
        morseCodeMap.put('y', "-.--");
        morseCodeMap.put('z', "--..");


        Set<String> uniqueTranslations = new HashSet<>();

        //遍历words数组

        for (String word : words) {
            StringBuilder translation = new StringBuilder();
            for (char c : word.toCharArray()) {
                //判断是否包含指定键
                if (morseCodeMap.containsKey(Character.toLowerCase(c))) {
                    translation.append(morseCodeMap.get(Character.toLowerCase(c)));
                }
            }
            uniqueTranslations.add(translation.toString());
        }

        System.out.println("不同翻译的数量: " + uniqueTranslations.size());
    }
}

以下代码输出的结果是什么?为什么?

public static void main(String[] args) {
    Map<Short, String> map = new HashMap<>();
    for (short i = 0; i < 100; i ++){
        map.put(i, String.valueOf(i));
        //第一次循环-1,不存在
        map.remove(i - 1);
    }
    System.out.println(map.size());
}

因为i+1 等于int类型,类型不一样。for循环i是short

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值