java 中Map详解及实例代码

下面是完整的“java 中Map详解及实例代码”攻略。

什么是Map?

Map是一种用来存储键-值对数据的数据结构,常用于数据缓存、数据筛选等场景。

Map是一种抽象的数据类型,Java中通过接口Map来定义Map类型。Map接口的实现类有:HashMap、TreeMap、LinkedHashMap 等。

HashMap

什么是HashMap

HashMap 是 Java 中常用的散列表,常用于缓存、索引等场景。HashMap 继承了AbstractMap类,实现了Map、Cloneable、Serializable这些接口。

HashMap的特点

  • HashMap 存储键值对,键是唯一的,如果重复了则覆盖,值可以为空。
  • HashMap 使用哈希算法,支持快速访问和快速插入。
  • HashMap 允许 null 键和 null 值。但为了避免 NullPointerException,建议不要使用 null 作为键。

HashMap的实现

HashMap 内部维护了一个 Entry 数组表,每个 Entry 内部包含了 key、value 和 next 三个属性,其中 next 指向的是下一个 Entry。

HashMap 通过哈希函数计算key的哈希值,根据哈希值摆放该 Entry 将要存放的位置,在决定存放位置时,若发现该位置已有 Entry,则通过next指针指向下一个 Entry ,依次类推,直到找到空位为止。同时,当HashMap大小超过阈值(默认是16),则会自动进行扩容。

HashMap的示例代码

import java.util.*;

public class HashMapExample {
    public static void main(String[] args) {
        //创建一个HashMap对象
        Map<String, String> map = new HashMap();

        //添加键值对
        map.put("apple", "苹果");
        map.put("banana", "香蕉");
        map.put("peach", "桃子");

        //获取键值对
        String value1 = map.get("apple");
        String value2 = map.get("banana");
        String value3 = map.get("peach");
        System.out.println("apple 对应的值为:" + value1);
        System.out.println("banana 对应的值为:" + value2);
        System.out.println("peach 对应的值为:" + value3);

        //获取所有键的集合
        Set<String> keySet = map.keySet();
        System.out.println("所有键的集合为:" + keySet);

        //获取所有值的集合
        Collection<String> values = map.values();
        System.out.println("所有值的集合为:" + values);

        //删除键值对
        map.remove("apple");
        System.out.println("删除 apple 后,map 中的键值对为:" + map);
    }
}

TreeMap

什么是TreeMap

TreeMap 是 Java的红黑树实现的一种Map,支持有序存储键值对。

TreeMap的特点

  • TreeMap 中的所有键值对都是有序的。具体来说,存储在 TreeMap 中的键值对会按照键的自然顺序排列,或者根据构造函数中提供的 Comparator 进行排序。
  • TreeMap 的键值对只保留了一份,即只有一个 key 对应一个 value,多次插入同一 key 值会覆盖之前的 value。
  • TreeMap 中的键和值都不允许为 null。

TreeMap的实现

由于 TreeMap 内部是通过红黑树来实现的,因此它的查找、插入等操作的复杂度并不固定,而是取决于红黑树的高度。一棵高度为h的红黑树的高度大约为 2log(n+1)(其中n为节点总数),因此 TreeMap 的复杂度与节点数成对数关系。

TreeMap的示例代码

import java.util.*;

public class TreeMapExample {
    public static void main(String[] args) {
        //创建一个TreeMap对象
        Map<String, String> map = new TreeMap();

        //添加键值对
        map.put("apple", "苹果");
        map.put("banana", "香蕉");
        map.put("peach", "桃子");

        //获取键值对
        String value1 = map.get("apple");
        String value2 = map.get("banana");
        String value3 = map.get("peach");
        System.out.println("apple 对应的值为:" + value1);
        System.out.println("banana 对应的值为:" + value2);
        System.out.println("peach 对应的值为:" + value3);

        //获取所有键的集合
        Set<String> keySet = map.keySet();
        System.out.println("所有键的集合为:" + keySet);

        //获取所有值的集合
        Collection<String> values = map.values();
        System.out.println("所有值的集合为:" + values);

        //删除键值对
        map.remove("apple");
        System.out.println("删除 apple 后,map 中的键值对为:" + map);
    }
}

以上就是“java 中Map详解及实例代码”的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 中Map详解及实例代码 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 什么是Java安全管理?

    Java安全管理是Java平台提供的一种安全机制,它通过Java安全管理器对Java运行时环境中进行的一些非安全操作进行控制,从而保障Java运行时环境的安全性。 Java安全管理器通过策略文件来指定Java运行时环境中允许执行的权限,从而对Java运行时环境进行安全控制。Java安全管理的使用可以分为以下步骤: 创建策略文件 策略文件必须是一个文本文件,它…

    Java 2023年5月11日
    00
  • Java Class 加密工具 ClassFinal详解

    Java Class 加密工具 ClassFinal详解 什么是Java Class 加密工具 Java Class 加密工具是一种将Java类文件加密的工具,可以防止被反编译得到源代码,保护Java应用程序的安全性和商业机密。 ClassFinal的使用 ClassFinal是一款免费的Java Class加密工具,支持图形界面和命令行两种方式进行操作。 …

    Java 2023年5月26日
    00
  • Struts2之Validator验证框架的详细介绍

    Struts2之Validator验证框架详细介绍 Validator是Struts2的核心验证框架之一,它通过在Action中添加验证规则来确认表单数据的有效性。Validator提供了大量的验证方法,比如检查字符串长度、格式、是否为空等等。 常用验证方法 Validator提供了许多常用的验证方法,常用的方法如下: required:检查字段必填 str…

    Java 2023年5月20日
    00
  • JSP Spring中Druid连接池配置详解

    JSP Spring中Druid连接池配置详解,以下是完整攻略: 一、什么是Druid连接池 Druid连接池是阿里巴巴开发的一款数据库连接池,性能强大,并且具有完善的监控功能。在JSP Spring中使用Druid连接池可以有效地提高数据库连接的效率,降低连接的等待时间。 二、Druid连接池的配置 在使用Druid连接池之前,需要进行一系列的配置。 1.…

    Java 2023年6月15日
    00
  • Java实现学生选课管理系统

    Java实现学生选课管理系统 简介 学生选课管理系统是一个典型的管理信息系统,它可以为学校提供在线选课服务,方便学生和教师进行选课和管理。Java语言是一种高性能、跨平台的编程语言,它具有很强的可扩展性和稳定性,非常适合开发学生选课管理系统。 开发环境 JDK 1.8 Eclipse MySQL 实现步骤 步骤1:创建数据库 学生选课系统需要一个数据库来存储…

    Java 2023年5月23日
    00
  • JAVA ArrayList详细介绍(示例)

    下面是关于“JAVA ArrayList详细介绍(示例)”的完整攻略。 ArrayList介绍 在Java中,ArrayList是一个动态数组,可以根据需要动态地扩展其大小。与Java数组不同,在ArrayList中,项目的插入和删除时无需移动其他项目。ArrayList类在内部使用一个数组来存储它的元素,它的大小通过构造函数在创建时确定,如果在添加时元素的…

    Java 2023年5月26日
    00
  • Flink流处理引擎零基础速通之数据的抽取篇

    请听我为您详细讲解“Flink流处理引擎零基础速通之数据的抽取篇”的完整攻略。 背景 在使用Flink处理数据之前,我们需要先将数据抽取出来,Flink流处理引擎提供了各种各样的数据抽取方式,如Kafka、RabbitMQ、Socket、File等,本篇攻略将详细介绍如何使用这些数据抽取方式将数据导入到Flink流处理引擎。 准备工作 在开始之前,需要先配置…

    Java 2023年5月20日
    00
  • SpringBoot jdbctemplate使用方法解析

    SpringBoot JdbcTemplate 使用方法解析 在SpringBoot中,我们可以通过使用JdbcTemplate来简化我们的数据库操作。本文将给出关于使用JdbcTemplate的详细说明和示例代码。我们将从以下方面给出解析: 配置SpringBoot和JdbcTemplate JdbcTemplate基本的CURD操作 示例代码 配置Spr…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部