当前位置: 首页 > article >正文

Java Map类

在这里插入图片描述

欢迎来到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.kler.cn/news/319283.html

相关文章:

  • 《AI办公类文档工具系列之三——ChatPDF》
  • 【java21】java21新特性之简单的Web服务器jwebserver
  • 主流卷积神经网络CNN总结
  • 网络安全知识:灾难恢复计划简介
  • 第一感觉有问题,但是没有提出来,要相信直觉。
  • Linux快速安装ClickHouse(附官方文档)
  • 【Vue】Pinia
  • 【AI创作组】Matlab中进行符号计算
  • HTML与JavaScript结合实现简易计算器
  • Leetcode面试经典150题-94.二叉树的中序遍历
  • Java面试篇基础部分- 锁详解
  • 数据结构——概论
  • CNN网络训练WISDM数据集:模型仿真及可视化分析
  • 人工智能:重塑未来的技术力量
  • ubuntu22.04取消开机输入密码(实测)
  • 一文说清楚ETL与Kafka如何实现集成
  • Windows 快捷键大全:提升工作效率的小技巧
  • 华为HarmonyOS地图服务 7- 在地图上绘制标记
  • HTTP(超文本传输协议)基础
  • Redis——持久化策略
  • 网络威慑战略带来的影响
  • 智谱清影 - CogVideoX-2b-部署与使用
  • 30个GPT提示词天花板,一小时从大纲到终稿
  • JavaScript类型判断(总结)
  • F5研究显示:企业加速IT发展,以充分挖掘生成式AI潜力
  • 基于 RealSense D435相机实现手部姿态检测
  • Imagen与其他生成模型的对比:DALL-E、Stable Diffusion、MidJourney
  • Markdown书写技巧深度解析
  • 赋能未来工厂:EasyCVR视频平台助力装备制造业迈向智能制造
  • Unity实现原始的发射子弹效果