Java Map类

news2024/9/25 19:26:09

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:Java

在这里插入图片描述


目录

  • 👉🏻map
      • 1. 常见的实现
      • 2. 主要方法
        • 2.1. `put(K key, V value)`
        • 2.2. `get(Object key)`
        • 2.3. `remove(Object key)`
        • 2.4. `containsKey(Object key)`
        • 2.5. `containsValue(Object value)`
        • 2.6. `keySet()`
        • 2.7. `values()`
        • 2.8. `entrySet()`
      • 3. 示例代码
  • 👉🏻访问
    • 1. 访问键
    • 2. 访问值
    • 3.访问键值
  • 👉🏻hashCode() 和 equals() 方法

👉🏻map

Map 是 Java 中的一种数据结构,用于存储键值对。它的主要特点是每个键唯一,每个键对应一个值。
每个 Map 中的元素由键(key)和值(value)组成,键是唯一的,而值可以重复。

以下是一些常见的 Map 实现和基本方法:

1. 常见的实现

  • HashMap:基于哈希表实现,允许 null 键和 null 值,查询速度快。
  • LinkedHashMap:保留插入顺序,查询速度稍慢于 HashMap
  • TreeMap:基于红黑树实现,按键的自然顺序或指定的比较器排序。

2. 主要方法

2.1. put(K key, V value)
  • 描述:将指定值与指定键关联。
2.2. get(Object key)
  • 描述:根据键获取对应的值。
2.3. remove(Object key)
  • 描述:移除指定键及其对应的值。
2.4. containsKey(Object key)
  • 描述:检查是否存在指定键。
2.5. containsValue(Object value)
  • 描述:检查是否存在指定值。
2.6. keySet()
  • 描述:返回所有键的集合。
2.7. values()
  • 描述:返回所有值的集合。
2.8. entrySet()
  • 描述:返回所有键值对的集合。

3. 示例代码

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

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> ageMap = new HashMap<>();
        
        // 添加键值对
        ageMap.put("Alice", 30);
        ageMap.put("Bob", 25);
        
        // 获取值
        System.out.println("Alice's age: " + ageMap.get("Alice")); // 输出: 30
        
        // 移除键值对
        ageMap.remove("Bob");
        
        // 检查键是否存在
        System.out.println("Contains Bob: " + ageMap.containsKey("Bob")); // 输出: false
        
        // 打印所有键值对
        for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

👉🏻访问

如果只需要访问 Map 中的键或值,可以使用 keySet()values() 方法:

1. 访问键

使用 keySet() 方法获取所有键的集合,然后可以遍历这个集合。

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

public class AccessKeysExample {
    public static void main(String[] args) {
        Map<String, Integer> ageMap = new HashMap<>();
        ageMap.put("Alice", 30);
        ageMap.put("Bob", 25);

        // 遍历键
        for (String key : ageMap.keySet()) {
            System.out.println("Key: " + key);
        }
    }
}

2. 访问值

使用 values() 方法获取所有值的集合,然后可以遍历这个集合。

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

public class AccessValuesExample {
    public static void main(String[] args) {
        Map<String, Integer> ageMap = new HashMap<>();
        ageMap.put("Alice", 30);
        ageMap.put("Bob", 25);

        // 遍历值
        for (Integer value : ageMap.values()) {
            System.out.println("Value: " + value);
        }
    }
}

3.访问键值

如果你需要同时访问 Map 中的键和值,可以使用 entrySet() 方法。这个方法返回一个包含所有键值对的集合,你可以通过 Map.Entry 来访问每个键及其对应的值。

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

public class AccessKeysAndValuesExample {
    public static void main(String[] args) {
        Map<String, Integer> ageMap = new HashMap<>();
        ageMap.put("Alice", 30);
        ageMap.put("Bob", 25);

        // 遍历键值对
        for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println("Key: " + key + ", Value: " + value);
        }
    }
}
  • entrySet() 返回一个包含所有 Map.Entry 对象的集合。
  • 每个 Map.Entry 对象都有 getKey()getValue() 方法,可以分别获取键和值。

👉🏻hashCode() 和 equals() 方法

hashCode()equals() 方法在 Java 中用于对象的相等性判断和哈希表中的存储。

  1. equals()
  • 用于比较两个对象是否相等。默认实现比较对象的引用,但通常需要重写以比较对象的内容。
  1. hashCode()
  • 返回对象的哈希码,用于在哈希表(如 HashMap)中快速查找对象。相等的对象必须具有相同的哈希码。

意义

  • 在集合类中,hashCode() 用于确定对象存储的位置,而 equals() 用于在同一位置中查找是否存在相等的对象。重写这两个方法时,必须确保:

  • 如果 equals() 返回 true,则 hashCode() 也必须相等。


如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长

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

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

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

相关文章

西部移动硬盘怎么恢复数据?4种详细且实用的方法

面对西部移动硬盘数据丢失的问题&#xff0c;用户往往感到焦虑和无助。本文将为您提供一系列详细且实用的数据恢复方法&#xff0c;帮助您轻松应对数据丢失的挑战&#xff0c;重拾宝贵信息。 图片来源于网络&#xff0c;如有侵权请告知 一、西部移动硬盘数据丢失原因 西部移动…

生成式AI在电商场景的应用、前景与挑战,零基础入门到精通,收藏这一篇就够了

编者按 百舸争流的AI时代&#xff0c;“AI”行动在千行百业迅速开展。电商是一个重要场景&#xff0c;**据阿里调研&#xff0c;在电商平台&#xff0c;约30%受访商家已经使用生成式AI&#xff0c;成为生成式AI技术普惠的最佳试验场之一。**目前&#xff0c;已使用生成式AI的商…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署经典扫雷小游戏

828华为云征文&#xff5c;华为云Flexus云服务器X实例之openEuler系统下部署经典扫雷小游戏 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、本次实践介绍2.1 本次实践简介2.2 扫雷小游戏简介2.3…

KPaaS平台用户权限管理系统方案之表单设计统一单据制作与授权

不同的业务系统各自独立运行&#xff0c;需要分别进行授权操作&#xff0c;这不仅繁琐耗时&#xff0c;还容易出现错误和不一致的情况&#xff0c;导致企业在多系统用户权限角色管理中常常陷入困境&#xff0c;那么&#xff0c;有没有一种高效、便捷的解决方案呢&#xff1f; …

关于预处理详解,#define,宏的使用以及命名 函数与宏的区别详细对比

预定义符号 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使⽤&#xff0c;预定义符号也是在预处理期间处理的 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循ANSI C&#xff…

汉诺塔的理解

数学思想——归纳推理&#xff08;不是反证法&#xff09; 为了方便&#xff0c;我把塔叫做牌&#xff0c;最左边的是从大到小&#xff08;底部开始&#xff09;放置的的牌堆。 数字的那一列是递归调用&#xff0c;右边长度不一的箭头是&#xff0c;数字阶段向下调用方法的情况…

稀土抗菌剂在涂料中应用的神奇表现

稀土抗菌剂的抗菌抑菌机理有四个层面:一是稀土化合物与细菌表面静电结合&#xff0c;造成直接的杀灭二是基于稀土的光催化半导体特性&#xff0c;通过光生氧自由基ROS机理杀灭细菌;三是稀土化合物破坏细胞膜通透性&#xff0c;造成破损导致细胞质流出杀灭细菌;四是稀土离子跨膜…

C标准库<string.h>-str、strn开头的函数

char *strcat(char *dest, const char *src) 函数功能 strcat 函数用于将一个字符串追加到另一个字符串的尾部。 参数解释 dest&#xff1a;指向目标字符串的指针&#xff0c;这个字符串的尾部将被追加 src 字符串的内容。src&#xff1a;指向源字符串的指针&#xff0c;其…

最精简的VScode Verilog RTL开发环境搭建教程

【2024-9月更新】最精简的VScode Verilog RTL开发环境搭建教程 文章目录 【2024-9月更新】最精简的VScode Verilog RTL开发环境搭建教程一、官网下载VScode二、登录账号同步三、安装配置拓展插件1.Verilog-HDL/systemVerilog拓展2.安装Universal Ctags● Windows系统安装univer…

(附源码) Springboot 飞速物流管理平台78584

摘要 受疫情的影响&#xff0c;很多城市处于静默的状态&#xff0c;导致店铺很多店铺都处于关闭的状态&#xff0c;给商家带来了极大的损失&#xff0c;很多商家为了减少损失都通过线上进行销售&#xff0c;比如直播、微商等&#xff1b;同时对于消费者来说&#xff0c;网上购买…

【Redis】分布式锁之 Redission

一、基于setnx实现的分布式锁问题 重入问题&#xff1a;获得锁的线程应能再次进入相同锁的代码块&#xff0c;可重入锁能防止死锁。例如在HashTable中&#xff0c;方法用synchronized修饰&#xff0c;若在一个方法内调用另一个方法&#xff0c;不可重入会导致死锁。而synchroni…

mysql练习题使用的表

dept(部门表):部门编号&#xff0c;部门名字&#xff0c;部门地点 salgrode工资等级表&#xff1a;等级&#xff0c;最高工资&#xff0c;最低工资 emp表&#xff1a;员工编号&#xff0c;员工名字&#xff0c;工作&#xff0c;领导编号MGR&#xff0c;入职时间&#xff0c;工…

Spring Boot 整合MyBatis-Plus 实现多层次树结构的异步加载功能

文章目录 1&#xff0c;前言2&#xff0c;什么是多层次树结构&#xff1f;3&#xff0c;异步加载的意义4&#xff0c;技术选型与实现思路5&#xff0c;具体案例5.1&#xff0c;项目结构5.2&#xff0c;项目配置&#xff08;pom.xml&#xff09;5.3&#xff0c;配置文件&#xf…

c++难点核心笔记(二)

系列文章目录 c难点&核心笔记(一) 继续接着上一章记录的重点内容包括函数&#xff0c;类和对象&#xff0c;指针和引用&#xff0c;C对象模型和this指针等内容&#xff0c;继续给大家分享&#xff01;&#xff01; 文章目录 系列文章目录友元全局函数做友元类做友元成员函…

国庆节怎么利用PHP发送文字短信

国庆节作为中国重要的法定节假日之一&#xff0c;不仅是全民欢庆的时刻&#xff0c;也是商家们进行促销活动的黄金时期。发送营销短信成为许多商家吸引顾客、提高销量的重要手段。 支持免费对接试用乐讯通PaaS平台 找好用的短信平台,选择乐讯通,短信群发|短信平台|群发短信软件…

分布式事务(1)

1.分布式事务 首先我们看看项目中的下单业务整体流程&#xff1a; 由于订单、购物车、商品分别在三个不同的微服务&#xff0c;而每个微服务都有自己独立的数据库&#xff0c;因此下单过程中就会跨多个数据库完成业务。而每个微服务都会执行自己的本地事务&#xff1a; 交易服…

Python办公自动化教程(002):PDF的拆分与合并

1、PyPDF2 介绍 介绍&#xff1a; PyPDF2是一个用于处理PDF文件的Python库&#xff0c;它提供了丰富的功能来读取、编辑、合并、拆分PDF文档&#xff0c;以及提取文本、图像和其他内容。 功能&#xff1a; 读取PDF&#xff1a;PyPDF2可以轻松地打开和读取PDF文件&#xff0c;获…

pytorch 神经网络模型 2D+3D 可视化,这个工具库够猛!

生信碱移 torch模块可视化 小编近期冲浪的时候发现一个torch模型架构可视化的神级python库VisualTorch&#xff0c;给各位铁子分享一下doge。 VisualTorch旨在帮助可视化基于Torch的神经网络架构&#xff0c;似乎是今年才上传到github上。它目前支持为PyTorch的Sequential和Cu…

jQuery——jQuery的2把利器

1、jQuery 核心函数 ① 简称&#xff1a;jQuery 函数&#xff0c;即为 $ 或者 jQuery ② jQuery 库向外直接暴露的是 $ 或者 jQuery ③ 引入 jQuery 库后&#xff0c;直接使用 $ 即可 当函数用&#xff1a;$&#xff08;xxx&#xff09; 当对象用&#xff1a;$.xxx&#x…

华为官宣,不支持安卓应用的纯血鸿蒙终于来了

华为前不久与苹果新品发布会撞车的全球首款量产三折叠屏幕手机 Mate XT&#xff0c;本以为已是其下半年狠活儿担当。 但直到看完昨天下午的华为秋季全场景发布会才发现&#xff0c;好家伙&#xff0c;此前那都叫小打小闹&#xff0c;原来大招全搁在后头呢&#xff01; 这场近两…