HashMap 的常用方法

这篇具有很好参考价值的文章主要介绍了HashMap 的常用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HashMap 是 Java 中使用最广泛的集合类之一,它是一种非常快速的键值对存储方式,可以用于存储和访问大量的数据。下面介绍一些 HashMap 的常用方法:

一、HashMap 的常用方法

1、Map.replaceAll()

Map.replaceAll() 方法将所有的值转为 String 类型

    @Test
    public void testHashMap01(){


        Map<String, Object> map = new HashMap<>();
        // 添加一些键值对
        map.put("key1", 123);
        map.put("key2", true);
        map.put("key3", new Date());

        System.out.println(map);

        // 将所有的值转为 String 类型
        map.replaceAll((k, v) -> String.valueOf(v));

        System.out.println(map);

        System.out.println(map.get("key3"));


    }

结果:

{key1=123, key2=true, key3=Wed May 10 10:14:09 CST 2023}
{key1=123, key2=true, key3=Wed May 10 10:14:09 CST 2023}
Wed May 10 10:14:09 CST 2023

2、put(key, value)

put(key, value) 向 HashMap 中添加一个键值对。

        Map<String, Object> map = new HashMap<>();
        // 添加一些键值对
        map.put("key1", 123);
        map.put("key2", true);
        map.put("key3", new Date());
3、get(key)

get(key) :根据键取出对应的值。

Integer value = map.get("apple");
4、containsKey(key)

containsKey(key) :判断 HashMap 中是否包含指定键。

if (map.containsKey("apple")) {
       // ...
   }
5、containsValue(value)

containsValue(value) :判断 HashMap 中是否包含指定值。

if (map.containsValue(1)) {
       // ...
   }
6、remove(key)

remove(key) :根据键删除 HashMap 中的一个键值对。

map.remove("apple");
7、keySet()

keySet() :返回 HashMap 中所有键的集合。

Set<String> keys = map.keySet();
8、values()

values() :返回 HashMap 中所有值的集合。

Collection<Integer> values = map.values();
9、entrySet()

entrySet() :返回 HashMap 中所有键值对的集合。

Set<Map.Entry<String, Integer>> entries = map.entrySet();

以上是常用的 HashMap 方法,还有其他一些方法可以查阅相关文档获得更多信息。

二、HashMap 的存储原理

HashMap 的存储原理主要是基于 Hash 算法和数组实现的。 在 HashMap
中,每个键值对对应一个数组中的一个元素,这个元素叫做“桶(bucket)”或“槽(slot)”。

数组的索引值就是通过 Hash 算法计算出来的,每个桶中存放的是一个链表,存储了 key-value 对。如果不同的键值对计算出来的索引值相同,则这些键值对会被放到同一个桶中,以链表的形式存储在该桶中,这就是 HashMap 的解决冲突的方法。

HashMap 的存储过程如下:

  1. 当使用 put 方法将一个键值对添加到 HashMap 中时,首先会根据键的 hashCode 值计算出数组索引位置。具体方法是,将 hashCode 值进行一些运算,得到一个数组索引值。这个索引值是键值对在数组中的位置。
  2. 如果数组中该位置为空,那么就可以直接将键值对存储在该位置,完成添加操作。
  3. 如果该位置已经有了键值对,那么就需要通过比较键的 equals 方法,来判断是更新该键值对的值,还是添加一个新的键值对。
  4. 如果表示键值对的链表长度较长,就会影响到 HashMap 的性能,因为在查找时可能需要遍历整个链表。

为此,Java 8 引入了“红黑树”(Red-Black Tree) 的数据结构,可以将链表转换为树,以提高性能。 需要注意的是,HashMap 是非线程安全的,如果在多线程环境下使用,可能会发生一些异常情况。如果需要在多线程环境中使用 HashMap,可以使用 ConcurrentHashMap 或Collections.synchronizedMap 方法来实现线程安全。文章来源地址https://www.toymoban.com/news/detail-438587.html

到了这里,关于HashMap 的常用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust 笔记:Rust 语言中哈希结构(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用

    Rust 笔记 Rust 语言中映射(HashMap)与集合(HashSet)及其用法 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130876735 【介绍】:本文介绍 Rust 中哈希结构相关概念及其使用。在 R

    2024年02月09日
    浏览(50)
  • JavaEE 初阶篇-线程安全的集合类、多线程环境使用 ArrayList、队列、哈希表(HashMap 、ConCurrentHashMap 、HashTable 的区别)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍   文章目录         1.0 线程安全的集合类         1.2 线程安全的集合类 - Vector         1.3 线程安全的集合类 - Stack         1.4 线程安全的集合类 - HashTable         2.0 多线程环境使用 ArrayList        

    2024年04月25日
    浏览(49)
  • JavaSE进阶 | Map集合、HashMap集合、TreeMap集合

    目录 🏀Map集合概述  🥅Map接口常用的方法 🥅哈希表(散列表)数据结构 🥅同时重写HashCode和equals 🥅HashMap和Hashtable的区别 🥅Properties类 🥅TreeSet(TreeMap)集合 🥅自平衡二叉树数据结构 🥅实现比较器接口 🥅集合工具类Collections (1) Map和Collection没有继承关系,是一个平级的

    2023年04月09日
    浏览(41)
  • 如何遍历HashMap集合?

    在Java中,HashMap是一种常用的数据结构,它提供了快速的查找、插入和删除操作。当我们需要遍历HashMap中的所有元素时,可以利用三种不同的方法实现。 HashMap中存储的是键值对的形式,因此最简单的方法就是直接遍历键值对。我们可以通过以下代码实现: 上述代码中,我们

    2023年04月23日
    浏览(40)
  • Day.js常用方法集合

    Day.js是一个轻量级的JavaScript日期库,具有简单易用、无依赖和体积小的特点。下面将介绍Day.js的优点和缺点。 目录 优点: 缺点: 接下来我们将详细介绍 Day.js 的使用方法,并附上代码示例和各种事件格式的转换。 安装与基本用法 然后,在你的代码中导入 Day.js: 使用 day

    2024年01月23日
    浏览(48)
  • 【Java】Map集合中常用方法

    Map集合的常用方法 方法名称 作用 V put(Key k,V value) 添加元素 V remove(K key, V value) 根据键值删除对应的值 void clear() 清除所有键值元素 boolean containsKey(Object key) 判断集合中是否包含指定的键 boolean containsValue(Object value) 判断集合中是否包含指定的值 boolean isEmpty() 判断集合是否为空

    2024年02月08日
    浏览(39)
  • Java 中 Set集合常用方法

    对象名.add() 向Set集合中添加元素 (但不能添加重复元素,Set集合中不允许元素重复) addAll(Collection c) 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中。 对象名.size() 返回 set 中的元素数(其容量) 对象名.isEmpty() 判断集合中是否有元素,若有则返回 true;

    2024年02月13日
    浏览(39)
  • Map集合体系(HashMap,LinkedHashMap,TreeMap)

    目录 1.Map集合 2.hashMap集合 3.LinkedHashMap集合 4. TreeMap集合 1.Map集合         Map集合是键值对集合         格式:{key1=value1, key2=value2, key3=value3, ...}         Map系列集合的特点都是由键决定的,值只是一个附属品,值不做要求 2.实现类有哪些?,各自有什么特点?  

    2024年02月21日
    浏览(37)
  • HashMap集合万字源码详解(面试常考)

    散列,又称哈希(Hash),是一种数据处理方式。它通过特定的算法,将输入(比如字符串、文件等)转换成固定长度的一串(通常是数字),并且这个过程是不可逆的。这个过程中的算法就称为哈希函数,得到的结果就称为哈希值。 散列的主要作用是为了检索数据。通过散

    2024年02月02日
    浏览(40)
  • 【Java-14】3万字深入理解HashMap集合(高级)

    ​ HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 ​ JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包