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