• Java基础(十九)Map


    1. Map基本操作

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

    • 将我国省份和其简称存到 Map 集合中
    • 将省份名称中包含"江"的省份从集合中删除
    • 遍历输出集合元素
    mport java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class MapWork01 {
        public static void main(String[] args) {
            HashMap<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("澳门", "澳");
    
            // 将省份名称中包含"江"的省份从集合中删除
            Iterator<Map.Entry<String,String>> iterator = provinceMap.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry<String,String> entry = iterator.next();
                if (entry.getKey().contains("江")) {
                    iterator.remove();
                }
            }
            System.out.println(provinceMap.size());
    
            // forEach匿名函数
            provinceMap.forEach((key, value) -> System.out.println(key + " : " + value));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    2. 统计数量

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

    import java.util.HashMap;
    
    public class CountNumWork02 {
        public static void main(String[] args) {
            String str = "Hello, World!!!";
            HashMap<Character,Integer> countMap = new HashMap<>();;
            for (int i = 0; i < str.length(); i++) {
                // getOrDefault 是 Map 接口中的一个方法,用于获取指定键对应的值,如果键不存在,则返回一个默认值。
                countMap.put(str.charAt(i),countMap.getOrDefault(str.charAt(i),0) + 1);
            }
            System.out.println(countMap);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3. 摩尔斯密码

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

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

    [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
    
    • 1

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

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

    示例 1:

    输入: words = ["gin", "zen", "gig", "msg"]
    输出: 2
    解释: 
    各单词翻译如下:
    "gin" -> "--...-."
    "zen" -> "--...-."
    "gig" -> "--...--."
    "msg" -> "--...--."
    
    共有 2 种不同翻译, "--...-." 和 "--...--."
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例 2:

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

    提示:

    • 1 <= words.length <= 100
    • 1 <= words[i].length <= 12
    • words[i] 由小写英文字母组成
    import java.util.HashMap;
    
    public class TranslationMoorWork03 {
        public static void main(String[] args) {
            String[] strings = {"gin", "zen", "gig", "msg"};
            System.out.println(translation(strings));
        }
    
        // 将字符串数组中的元素转译
        private static int translation(String[] strs) {
            String[] strings = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
            HashMap<String,Integer> map = new HashMap<>();
            for (String s : strs) {
                String str = "";
                for (int i = 0; i < s.length(); i++) {
                    str += strings[s.charAt(i) - 97];
                }
                map.put(str,map.getOrDefault(str, 0) + 1);
            }
            return map.size();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

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

    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));
            map.remove(i - 1);
        }
        System.out.println(map.size());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出100,因为储存的键的类型为short,删除的键的类型为int,所有每次都没有删除。

  • 相关阅读:
    【网页设计】基于HTML在线图书商城购物项目设计与实现_(图书商城10页) bootstarp响应式
    Filter过滤器
    web前端期末大作业——基于html+css+javascript+jquery+bootstrap响应式户外旅游网站
    C 语言进阶
    码蹄集 - MT3252 - 子序列问题
    电脑图片无损放大怎么操作?怎么无损放大图片?
    1073 Scientific Notation
    CFdiv1+2-Bash and a Tough Math Puzzle-(线段树维护gcd+单点+区间)
    angular项目指定端口,实现局域网内ip访问
    社交媒体数据恢复:Meetalk
  • 原文地址:https://blog.csdn.net/bao_14440/article/details/132722649