【Java】基础练习(十二)

news2025/2/25 5:42:45

1.Map基本操作

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

  • 将我国省份和其简称存到 Map 集合中;
  • 将省份名称中包含"江"的省份从集合中删除;
  • 遍历输出集合元素

(1)源码:

package swp.kaifamiao.codes.Java.d0906;
// 将我国省份和其简称存到 Map 集合中
// 将省份名称中包含"江"的省份从集合中删除
// 遍历输出集合元素
import java.util.HashMap;
import java.util.Map;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text01 {
    public static void main(String[] args) {
        // 创建一个 Map 集合
        Map<String, String> provinceMap = new HashMap<>(40);
        // 向 Map 中添加省份和简称
        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("澳门", "澳");

        // 将省份名称中包含"江"的省份从集合中删除
        for (String province : new HashMap<>(provinceMap).keySet()) {
            if (province.contains("江")) {
                provinceMap.remove(province);
            }
        }

        // 遍历输出集合元素
        for (Map.Entry<String, String> entry : provinceMap.entrySet()) {
            System.out.println(entry.getKey() + " 的简称是:" + entry.getValue());
        }
    }
}

(2)运行效果:

在这里插入图片描述
在这里插入图片描述


2.统计数量

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

(1)源码:

package swp.kaifamiao.codes.Java.d0906;
// 输入一个字符串,统计字符串中每个字符出现的次数并输出

import java.util.HashMap;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text02 {
    public static void main(String[] args) {
        String str = "Hello, world!";
        HashMap<Character, Integer> map = new HashMap<>();

        // 迭代字符串中的每个字符
        for(int i=0; i<str.length(); i++) {
            char ch = str.charAt(i);
                // 如果字符已存在于 map 中,则将其对应的 value 值加 1
                if(map.containsKey(ch)) {
                    map.put(ch, map.get(ch) + 1);
                } else {
                    // 如果字符不存在于 map 中,则添加进去,并将其对应的 value 值置为 1
                    map.put(ch, 1);
                }
        }

        // 输出结果
        for(Character key : map.keySet()) {
            int count = map.get(key);
            System.out.println(key + ": " + count);
        }
    }
}

(2)运行效果:

在这里插入图片描述


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)源码:

package swp.kaifamiao.codes.Java.d0906;

import java.util.HashMap;

/**
 * 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串,比如:
 * 'a' 对应 ".-",
 * 'b' 对应 "-...",
 * 'c' 对应 "-.-.",以此类推。
 *
 * 给你一个字符串数组 words,每个单词可以写成每个字母对应摩尔斯密码的组合。
 * 例如,"cab" 可以写成 "-.-..--...",(即 "-.-." + ".-" + "-..." 字符串的结合)。
 * 我们将这样一个连接过程称作单词翻译。
 * 对 words 中所有单词进行单词翻译,返回不同单词翻译的数量。
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text03 {
    public static void main(String[] args) {
        String[] strings = {"gin", "zen", "gig", "msg"};
        System.out.println(translation(strings));
    }

    /**
     * 将字符串数组中的元素进行翻译,并统计不同翻译结果的数量
     *
     * @param strs 字符串数组
     * @return 不同翻译结果的数量
     */
    private static int translation(String[] strs) {
        // 定义摩尔斯密码表
        String[] codes = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};

        // 使用 HashMap 存储翻译结果及其出现次数
        HashMap<String, Integer> map = new HashMap<>();

        // 遍历每个单词
        for (String word : strs) {
            String translation = "";

            // 将每个字母翻译成摩尔斯密码,并将翻译结果拼接起来
            for (char c : word.toCharArray()) {
                int index = c - 'a';
                translation += codes[index];
            }

            // 将完整的单词翻译添加到 HashMap 中,并记录出现次数
            map.put(translation, map.getOrDefault(translation, 0) + 1);
        }

        // 返回不同翻译结果的数量
        return map.size();
    }
}

(2)运行效果:

在这里插入图片描述


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

在这里插入图片描述

解析:

       由于 i 是 short 类型,在进行减法操作 i - 1 时,会先将 i 转换为 int 类型再进行减法运算。但由于 map 泛型中定义的key的类型为 Short,所以每次删除都没有成功。
       若想要避免这种情况,可以将i - 1的结果强制转换成Short类型,例如:

package swp.kaifamiao.codes.Java.d0906;

import java.util.HashMap;
import java.util.Map;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text04 {
    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((short)(i - 1));
        }
        System.out.println(map.size());
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/982224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习嵌入式软件工程师面试题(day1)

前言 &#xff08;1&#xff09;如果你在读大学&#xff0c;不管你本科毕业是读研还是就业&#xff0c;你都可以早点准备嵌入式面试题&#xff0c;本系列教程的面试题均基于C语言。 &#xff08;2&#xff09;像嵌入式学得好&#xff0c;且学历不错的本科生和研究生&#xff0c…

应急物资管理系统-完善应急物资保障体系

东识智慧应急物资管理系统&#xff08;智物资DW-S300&#xff09;在政府应急救援物资管理、红十字会应急物资管理、防汛应急物资管理、医疗抗疫物资管理等行业均有成功案例。智物资DW-S300实现了功能一体化管理、流程一体化管理、信息一体化管理&#xff0c;使得资产从采购、入…

循环(while do...while for)介绍

3.循环 1.while循环 while循环是先判断后执行 while循环一般都会有: 循环初始值, 循环条件 和 循环变量增量(或者减量) 语法: while(表达式){逻辑代码块 }// 计算123...100之和var num 1;//循环初始值var sum 0;//统计结果//循环条件while (num < 100) {console.log(n…

Java到底是值传递还是引用传递【通俗易懂】

我相信很多刚学Java的小伙伴都很难理解Java到底是值传递还是引用传递的问题&#xff0c;但肯定背过这道面试题。确实&#xff0c;Java就是值传递&#xff0c;那什么原理呢&#xff1f;请往下看。 我们先看一段代码&#xff1a;分析一下这两句打印的结果分别是什么。 public c…

对象存储 OSS

大家好 , 我是苏麟 , 今天聊聊OSS . 这里使用阿里云的OSS对象存储. 首先大家得有一个阿里云账号 , 注册大家都会 这里不多介绍 . 阿里云官网 : 阿里云登录页 (aliyun.com) 首页产品目录下存储集合里对象存储OSS 进入对象存储OSS页面 点击管理控制台(新用户应该有免费试用期的)…

【数学建模竞赛】预测类赛题常用算法解析

解析常见的预测类算法 灰色预测模型 灰色预测模型是一种利用少量的、不完全的信息&#xff0c;建立数学模型并进行预测的方法。该方法通过对系统行为特征的发展变化规律进行估计预测&#xff0c;同时也可以对行为特征的异常情况发生的时刻进行估计计算&#xff0c;并研究特定…

Python商业数据存取

&#x1f433; 我正在和鲸社区参加“商业数据分析训练营活动” https://www.heywhale.com/home/competition/6487de6649463ee38dbaf58b &#xff0c;以下是我的学习笔记&#xff1a; 学习主题&#xff1a;Python商业数据存取 日期&#xff1a;2023.9.6 关键概念/知识点&…

IMX6ULL移植篇-uboot源码目录表

一. uboot 源码分析前提 由于 uboot 会使用到一些经过编译才会生成的文件&#xff0c;因此&#xff0c;我们在分析 uboot的时候&#xff0c;需要先编译一下 uboot 源码工程。 这里所用的开发板是 nand-flash 版本。 本文学习续上一篇文章&#xff0c;如下&#xff1a; IMX6U…

电商物流解决方案公司Globavend申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;电商物流解决方案公司Globavend近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff08;GVH&#xff09;&#x…

chatglm2-6b在P40上做LORA微调 | 京东云技术团队

背景&#xff1a; 目前&#xff0c;大模型的技术应用已经遍地开花。最快的应用方式无非是利用自有垂直领域的数据进行模型微调。chatglm2-6b在国内开源的大模型上&#xff0c;效果比较突出。本文章分享的内容是用chatglm2-6b模型在集团EA的P40机器上进行垂直领域的LORA微调。 …

智慧铁路:机车整备场数字孪生

机车整备场是铁路运输系统中的重要组成部分&#xff0c;它承担着机车的维修、保养和整备工作&#xff0c;对保障铁路运输的运维和安全起着至关重要的作用。 随着铁路运输的发展、机车技术的不断进步&#xff0c;以及数字化转型的不断推进&#xff0c;数字孪生技术在机车整备场…

LeetCode刷题笔记【27】:贪心算法专题-5(无重叠区间、划分字母区间、合并区间)

文章目录 前置知识435. 无重叠区间题目描述参考<452. 用最少数量的箭引爆气球>, 间接求解直接求"重叠区间数量" 763.划分字母区间题目描述贪心 - 建立"最后一个当前字母"数组优化marker创建的过程 56. 合并区间题目描述解题思路代码① 如果有重合就合…

【业务功能篇99】微服务-springcloud-springboot-电商订单模块-生成订单服务-锁定库存

八、生成订单 一个是需要生成订单信息一个是需要生成订单项信息。具体的核心代码为 /*** 创建订单的方法* param vo* return*/private OrderCreateTO createOrder(OrderSubmitVO vo) {OrderCreateTO createTO new OrderCreateTO();// 创建订单OrderEntity orderEntity build…

echarts饼图label自定义样式

生成的options {"tooltip": {"trigger": "item","axisPointer": {"type": "shadow"},"backgroundColor": "rgba(9, 24, 48, 0.5)","borderColor": "rgba(255,255,255,0.4)&q…

Python Qt学习(十)一个简易的POP3邮件客户端

公司把126这类的邮箱网站都封了&#xff0c;正好现在无事&#xff0c;加之&#xff0c;算是一个对这俩周学习Qt的一个总结吧。遂写了这么一个简易的通过POP3协议接收126邮件的客户端。 源代码&#xff1a; # -*- coding: utf-8 -*-# Form implementation generated from read…

OpenCV图像处理——矩形(Rect)类的常用操作

1.Rect类 创建类 Rect类成员变量x、y、width、height&#xff0c;分别为左上角点的坐标和矩形的宽和高。 创建一个Rect对象Rect,并在图像上画该矩形框。 cv::Rect rect(100, 50, 500, 500);cv::Mat cv_src cv::imread("11.JPG");cv::rectangle(cv_src, rect, cv:…

每一座屎山代码背后,都藏着一堆熟读代码规范的研发

&#x1f449;导读 韩寒在《他的国》中写道&#xff1a;“我们懂很多道理&#xff0c;却依然过不好这一生”&#xff0c;人们虽然知道很多道理&#xff0c;但并不一定能将这些道理应用到实际生活中。这种现象在生活中很常见&#xff0c;我们听了很多的成功学的道理&#xff0c;…

接入 NVIDIA A100、吞吐量提高 10 倍!Milvus GPU 版本使用指南

Milvus 2.3 正式支持 NVIDIA A100&#xff01; 作为为数不多的支持 GPU 的向量数据库产品&#xff0c;Milvus 2.3 在吞吐量和低延迟方面都带来了显著的变化&#xff0c;尤其是与此前的 CPU 版本相比&#xff0c;不仅吞吐量提高了 10 倍&#xff0c;还能将延迟控制在极低的水准。…

ChatGLM2-6B 部署

引言 这是ChatGLM2-6B 部署的阅读笔记&#xff0c;主要介绍了ChatGLM2-6B模型的部署和一些原理的简单解释。 ChatGLM-6B 它是单卡开源的对话模型。 充分的中英双语预训练 较低的部署门槛 FP16半精度下&#xff0c;需要至少13G的显存进行推理&#xff0c;甚至可以进一步降低…

罕见病 对称性脂肪瘤(MSL) 马德龙病

如果你体内脂肪瘤分布大致如下 而且个数不断增多 这篇文章适合你 症状 脂肪瘤个数一直增加 而且很对称 比如: 左手臂一个 右手臂一个 别名 多发性对称性脂肪增多症 Multiple symmetric lipomatosis (MSL) 多发性对称性脂肪瘤&#xff08;MSL&#xff09; 脂肪瘤 马德龙病(…