Java基础(十九)Set

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));
    }
}

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);
    }
}

3. 摩尔斯密码

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

‘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] 由小写英文字母组成
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();
    }
}

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());
}

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

你可能感兴趣的:(Java,java,开发语言,算法)