Java集合-HashMap

Java集合-HashMap

HashMap是Java集合框架中最常用的数据结构之一,它基于哈希表实现,在插入、删除、查找等操作上具有很高效的表现。本文将详细讲解HashMap的使用方法和具体实现。

HashMap的特点

  • HashMap是一种无序的数据结构,它存储的键值对是没有顺序的。
  • 它允许一条记录的键和值来自不同的映射表,例如,键可以是String类型,而值可以是Integer类型。
  • HashMap允许键和值为null,但要注意,如果键为null,那么只能存储一条值为null的记录;如果值为null,则可以存储多条以不同键为null的记录。
  • HashMap的查询、插入和删除操作的平均时间复杂度都为O(1),因此在大多数场景下它都是性能最好的选择。

HashMap的使用方法

Java中的HashMap是通过相应的HashMap类实现的。通过以下代码可以创建一个空的HashMap:

HashMap<Key, Value> map = new HashMap<Key, Value>();

其中Key和Value分别表示键和值的类型,可以是Java中的任何对象类型。

向HashMap中添加键值对的方法是put(key, value)。例如,下面的代码向HashMap中添加了一个键为"apple",值为5的记录:

HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("apple", 5);

在添加元素时需要注意键不能重复,如果重复了,新的值会覆盖旧的值。可以通过containsKey()方法来检查一个键是否已经存在,例如:

if (!map.containsKey("apple")) {
    map.put("apple", 5);
}

获取HashMap中值的方法是get(key),例如,下面的代码将获取键为"apple"的值:

int value = map.get("apple");

删除HashMap中键值对的方法是remove(key),例如,下面的代码将删除键为"apple"的记录:

map.remove("apple");

HashMap的示例说明

示例一

下面的示例展示了如何使用HashMap来计算每个元素在一个数组中出现的次数:

public static void main(String[] args) {
    int[] nums = {1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 2};
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i = 0; i < nums.length; i++) {
        if (map.containsKey(nums[i])) {
            int count = map.get(nums[i]);
            map.put(nums[i], count + 1);
        } else {
            map.put(nums[i], 1);
        }
    }
    for (int num : nums) {
        System.out.println(num + "出现了" + map.get(num) + "次");
    }
}

该示例通过遍历数组,将每个元素作为键,出现的次数作为值,存储在HashMap中。最后,将所有元素出现次数输出到控制台。

示例二

下面的示例展示了如何使用HashMap来统计一个字符串中每个字符出现的次数:

public static void main(String[] args) {
    String s = "hello world";
    HashMap<Character, Integer> map = new HashMap<Character, Integer>();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (map.containsKey(c)) {
            int count = map.get(c);
            map.put(c, count + 1);
        } else {
            map.put(c, 1);
        }
    }
    for (char c : s.toCharArray()) {
        System.out.println(c + "出现了" + map.get(c) + "次");
    }
}

该示例通过遍历字符串中的每个字符,将每个字符作为键,出现的次数作为值,存储在HashMap中。最后,将所有字符出现次数输出到控制台。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java集合-HashMap - Python技术站

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

相关文章

  • 提升Ruby on Rails性能的几个解决方案

    当网站的流量愈发庞大之后,Ruby on Rails的性能问题可能会变得突出。在这篇文章中,我们将分享一些提升Ruby on Rails性能的解决方案。以下是一些示例: 1. 数据库优化 首先,可以考虑数据库优化。你可以执行以下一些操作: 添加索引:你可以从应用程序中查找慢速查询,并使用适当的索引进行优化。例如,在查询中使用一个where子句时,可以在相应W…

    Java 2023年6月2日
    00
  • Spring Boot 直接用jar运行项目的方法

    Spring Boot应用程序可以打包成可执行的jar文件,方便部署和运行。本文将详细讲解如何使用jar文件运行Spring Boot应用程序,包括如何打包jar文件、如何运行jar文件等。 打包jar文件 在使用jar文件运行Spring Boot应用程序之前,需要先打包jar文件。可以使用Maven或Gradle等构建工具打包jar文件。以下是一个使用M…

    Java 2023年5月15日
    00
  • SpringBoot过滤器如何获取POST请求的JSON参数

    Spring Boot 过滤器拦截 HTTP 请求,并可以自定义操作修改请求和响应,很多情况下我们需要获取 POST 请求传递的 JSON 参数,下面我们就来介绍一下如何获取 POST 请求的 JSON 参数。 1.获取 POST 请求的 JSON 参数 我们可以通过 request.getInputStream() 获取 POST 请求的 inputstr…

    Java 2023年5月26日
    00
  • JAVA开发中的一些规范讲解(阿里巴巴Java开发规范手册)

    Java开发中的规范是非常重要的,可保持代码的可维护性,提高开发效率,防止出现不必要的错误,减少维护成本等。而阿里巴巴Java开发规范手册是一个有影响力的规范手册,下面我做一个阐述: 一、命名规范 类名使用 UpperCamelCase 大驼峰命名法,方法名、属性名以及变量名使用 lowerCamelCase 小驼峰命名法。 示例代码: public cla…

    Java 2023年5月20日
    00
  • 2021年最新Redis面试题汇总(2)

    2021年最新Redis面试题汇总(2) 完整攻略 一、Redis中的事务 Redis的事务分为单条命令事务和多条命令事务。单条命令事务就是事务块中只包含一条命令,而多条命令事务就是在事务块中包含多条命令。 1.1 单条命令事务 在Redis中,单条命令事务使用MULTI、EXEC、WATCH和UNWATCH这四个命令来实现。其中: MULTI命令标记一个事…

    Java 2023年5月19日
    00
  • Redis Plus 来了,性能炸裂!

    来源:https://developer.aliyun.com/article/705239 1 什么是KeyDB? KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如…

    Java 2023年4月25日
    00
  • 基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)

    当用户需要输入验证码时,通常会使用图片验证码或者是短信验证码。其中图片验证码是最常见的一种,但它的缺点是易被机器人等程序攻击,不够安全。而短信验证码的方式虽然更加安全,但也更加繁琐,需要用户额外的操作。为了避免这些问题,一种更加友好的验证码提示方式是横线提示输入验证码,并且随着验证码输入消失,这个方法使用JavaScript来实现。 下面是一个具体的实现步骤…

    Java 2023年6月15日
    00
  • js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)

    当用户需要上传图片时,常见的方式是通过点击上传按钮或将图片拖拽到上传区域进行上传。但是,这个过程可能会比较繁琐,用户需要先将图片从电脑上选择出来或者用截图工具进行截图,然后才能进行上传操作。 为了提高用户的上传体验,我们可以通过JS实现Ctrl+V粘贴上传图片的功能。具体实现过程如下: 获取粘贴板上的图片数据 首先,需要监听网页上的粘贴事件,在用户按下Ctr…

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