Java 中的 Map 集合:入门篇

news2024/11/16 17:53:30

在 Java 编程中,Map 是用于存储键值对。它提供了快速的查找和检索功能,是处理大量数据的理想选择。

本文将深入介绍 Java 中的 Map 集合,包括其基本概念、常见实现类、典型用法以及一些常见问题的解决方案。

1. Map 的基本概念

Map 是一种键值对的集合,每个键对应一个值。在 Java 中, Map 是一个接口,常用的实现类有 HashMap 、 TreeMap 和 LinkedHashMap。

让我们先看一个简单的例子:

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

public class MapExample {
    public static void main(String[] args) {
        // 创建一个HashMap实例
        Map<String, Integer> studentScores = new HashMap<>();

        // 添加键值对
        studentScores.put("Alice", 95);
        studentScores.put("Bob", 88);
        studentScores.put("Charlie", 92);

        // 获取值
        int aliceScore = studentScores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        // 遍历Map
        for (Map.Entry<String, Integer> entry : studentScores.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

输出结果

图片

2. 常见的Map实现类

2.1 HashMap

HashMap 是最常用的 Map 实现类之一,它基于哈希表实现,提供了快速的插入、删除和查找操作。

然而,它不保证元素的顺序。

Map<String, String> capitalCities = new HashMap<>();
capitalCities.put("China", "Beijing");
capitalCities.put("USA", "Washington, D.C.");
capitalCities.put("India", "New Delhi");
// 遍历Map
for (Map.Entry<String, String> entry : capitalCities.entrySet()) {
  System.out.println(entry.getKey() + ": " + entry.getValue());
}

输出结果

图片

2.2 TreeMap

TreeMap 是基于红黑树实现的 Map,它保持了元素的自然排序。这意味着键按升序排列。

Map<String, String> fruitPrices = new TreeMap<>();
fruitPrices.put("Apple", "$1.00");
fruitPrices.put("Strawberry","$9");
fruitPrices.put("Banana", "$0.75");
fruitPrices.put("Orange", "$1.25");

// 遍历Map
for (Map.Entry<String, String> entry : fruitPrices.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

输出结果

图片

2.3 LinkedHashMap

LinkedHashMap 继承自 HashMap,它保持了元素的插入顺序。这使得遍历时能够按照插入的顺序进行。

Map<String, String> programmingLanguages = new LinkedHashMap<>();
programmingLanguages.put("Java", "High");
programmingLanguages.put("C++", "Medium");
programmingLanguages.put("Python", "High");

// 遍历Map
for (Map.Entry<String, String> entry : programmingLanguages.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

输出结果

图片

3. 典型用法

3.1 遍历Map

使用 entrySet() 方法遍历 Map,这比通过 keySet() 遍历键更高效,尤其是对于大型 Map。

Map<String, Integer> population = new HashMap<>();
// 添加键值对...

for (Map.Entry<String, Integer> entry : population.entrySet()) {
    System.out.println(entry.getKey() + " has population: " + entry.getValue());
}

3.2 判断是否包含某个键或值

Map<String, String> countries = new HashMap<>();
// 添加键值对...

if (countries.containsKey("USA")) {
    System.out.println("USA is in the map.");
}

if (countries.containsValue("Paris")) {
    System.out.println("Paris is a value in the map.");
}

3.3 替换和删除元素

Map<String, String> colors = new HashMap<>();
// 添加键值对...

colors.replace("Red", "Crimson"); // 替换值
colors.remove("Blue"); // 删除键值对

4. 常见问题解决方案

4.1 处理不存在的键

使用 getOrDefault()方法可以在键不存在时提供一个默认值,避免返回null。

Map<String, String> fruits = new HashMap<>();
// 添加键值对...

String appleColor = fruits.getOrDefault("Apple", "Unknown");
System.out.println("Apple's color is: " + appleColor);

4.2 合并两个Map

Map<String, Integer> map1 = new HashMap<>();
Map<String, Integer> map2 = new HashMap<>();
// 向两个Map中添加键值对...

map2.forEach((key, value) -> map1.merge(key, value, Integer::sum));

总结

Map 是 Java 中强大而灵活的数据结构,适用于各种场景。了解不同实现类的特性和用法,以及掌握常见问题的解决方案,将使你在日常编程中更加得心应手。

希望今天的内容对初学 Java 的朋友有所启发或者帮助。各位,有帮助点个赞或在看呀:-),这对我非常重要。

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

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

相关文章

#01 Stable Diffusion基础入门:了解AI图像生成

文章目录 前言什么是Stable Diffusion?Stable Diffusion的工作原理如何使用Stable Diffusion?Stable Diffusion的应用场景结论 前言 在当今迅速发展的人工智能领域&#xff0c;AI图像生成技术以其独特的魅力吸引了广泛的关注。Stable Diffusion作为其中的一项前沿技术&#…

2. keepalived结合LVS配合使用

keepalived结合LVS配合使用 1、后端nfs存储提供项目文件2、后端nfs上集中安装MySQL&#xff0c;共用数据库3、业务服务器通过LNMP正常部署wordpress博客&#xff0c;客户端通过DNS解析可正常访问4、所有业务服务器上修改arp参数、配置VIP5、配置keepalived实现LVS高可用5.1 kee…

【大学物理】期末复习双语笔记

3 vectors and scalar 20 damped harmonic motion,forced harmonic motion, superposition of SHM damped harmonic motion underdamped motion:欠阻尼 critical damped零界阻尼 over damped过阻尼 energy of damped harmonic motion application of damped oscillation:减震器…

Python的super方法两种调用方式解析

Python由于具有多继承的特点&#xff0c;因此在使用super()方法的时候&#xff0c;需要考虑调用的是哪个父类的方法&#xff0c;这里面涉及到以下内容&#xff1a; 菱形继承(钻石集成)MRO&#xff08;method resolution order&#xff09; 下面的图像就是菱形继承。 抛开复…

Spring 中如何控制 Bean 的加载顺序?

如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口&#xff0c;那么恭喜&#xff0c;你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中&#xff0c;Order 是一个非常实用的元注解&#xff0c;它位于 spring-core 包下&#xff0c;主要用于控制某些特定上下文…

va_start和va_end使用介绍

一 概述 采用C语言编程的时候&#xff0c;函数中形式参数的数目通常是确定的&#xff0c;在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等。那么它们是怎…

【Docker】学习笔记(超万字图文整理)

前言 再此感谢黑马程序员提供的Docker课程&#xff01; 什么是Docker&#xff1f;看这一篇干货文章就够了&#xff01; UPD: 补充更新微服务集群、Docker镜像仓库部分内容 所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#…

ai写作神器app有哪些?好用的智能写作APP推荐

ai写作神器app有哪些&#xff1f;AI写作神器app在现代写作领域正迅速崭露头角&#xff0c;它们不仅极大提升了创作效率&#xff0c;而且通过集成前沿的人工智能技术&#xff0c;为创作者们提供了前所未有的便利。这些app能够智能分析写作需求&#xff0c;快速生成高质量的内容&…

PMP(项目管理)- PMBOK第七版重点解析

PMP&#xff08;项目管理&#xff09;- PMBOK第七版重点解析 本文内容是PMBOK第七版的重点章节精华提炼 参考资料内容&#xff1a;PMBOK第七版&PRINCE2第七版 参考资料在文末获取&#xff0c;关注我&#xff0c;分享优质前沿资料&#xff08;IT、运维、编码、互联网…&a…

边缘计算的AI小板——OrangePi AI Pro

简介 OrangePi AI Pro是一款基于Allwinner H6处理器的嵌入式AI计算设备&#xff0c;适用于物联网和边缘计算。它具有强大的性能、低功耗、多接口和小尺寸。 本文分为三个部分&#xff1a; 一、对该板进行简单的开箱介绍。 二、 将SD卡中的系统迁移到由于该板支持SD卡、SSD…

Kong网关身份认证

认证的步骤&#xff1a; 启用认证插件。创建用户。给用户分配认证信息&#xff08;扩展&#xff1a;账号密码 等&#xff09;。请求时&#xff0c;带上认证信息。 key-auth: 创建用户&#xff1a; [rootlocalhost etc]# curl -i -X POST http://localhost:8001/consumers -…

【教程】如何实现WordPress网站降级(用于解决插件和主题问题)

在最新可用版本上运行WordPress安装、插件和主题是使用该平台的关键最佳实践。还建议使用最新版本的PHP。但是,在某些情况下,这是不谨慎或不可能的。 如果您发现自己处于这种情况,您可能需要撤消更新并降级您的WordPress网站(或其中的一部分)。幸运的是,有一些方法可用于…

数字逻辑电路交通信号灯控制器设计与multisim仿真

当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。因此,一个好的交通灯控制系统,将给道路拥挤、违章控制等方面给技术革新。随着大规模的集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现在科…

Systemd服务配置排坑-TasksMax参数

一、背景 由于产品是Java程序&#xff0c;之前都是通过封装的start.sh运行即可。但是出于架构调整&#xff0c;改换为Ansible进行自动化部署&#xff0c;同时改用Systemd service的方式来对程序进行管理。 但不知道为啥原因&#xff0c;使用systemctl启动这个程序&#xff0c;就…

如何优雅的解析多层JSON报文数据?什么是Ognl?

在日常项目开发中&#xff0c;经常遇到与其他数据交互就需要进行数据传输处理&#xff0c;那么当对方系统返回的数据报文有多层复杂的json数据时候&#xff0c;如何简单快捷的获取指定节点的数据呢&#xff0c;答案是可以使用Ognl来解决。 1.什么是ognl&#xff1f; OGNL全称…

一位美国的PM分享:AI产品经理的10大技能

从传统角度来看&#xff0c;一款成功的产品需要拥有稳定的功能&#xff0c;至少要满足甚至超出用户的期望&#xff0c;并且能够为业务的增长作出重大贡献。产品经理的主要职责包括设定和管理用户期望&#xff0c;定期收集可量化的反馈信息&#xff0c;严格地与工程师进行沟通&a…

【代码随想录——动态规划——理论基础】

1.理论基础 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c…

Jenkins的jdk和maven配置

目录 传送门前言一、概念二、JDK的配置三、Maven配置四、环境变量配置五、坑 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyBatis框架&#xff08;精品&#xff09…

Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码

Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问&#xff0c;并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法 本文介绍了基于docker的oracle12.2.0.1部署&#xff0c;包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等&#xff0c;并介绍了镜像制…