HashMap知识点及原理

目录

一、知识点

1、数据结构

2、形式

3、操作

二、原理

1、

2、


一、知识点

1、数据结构

在java1.8之前,hashmap的数据结构为数组+链表;链表头插;

在java1.8之后,hashmap的数据结构为数组+链表+红黑树;链表尾插;

链表长度大于8之后,使用红黑树的数据结构存储;

2、形式

hashmap为键值对形式,即{k,v},k:键,v:值;一个k值对应一个v值,形成一种映射关系;

hashmap是无序的,时间复杂度为O(1);

3、操作

hashmap有如下几种操作:

put(k,v),创建一个新的键值对并加入哈希表中;

get(k),返回k所对应的v;

remove(k) 删除该键值对;

containsKey(Object key),返回值是boolen型,判断当前哈希表中是否存在键为k的键值对;

containsValue(Object value),判断当前哈希表是否存在value的键值对;

package org.example;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        HashMap<String,String> map = new HashMap<>();
        map.put("手机","4500");
        map.put("电脑","7000");
        map.put("平板","4000");
        map.put("耳机","500");
        System.out.println(map);
        System.out.println("平板: "+map.get("平板"));
        System.out.println(map.containsKey("平板"));

        map.remove("平板");
        System.out.println(map.containsValue("4000"));
        //Set key = map.keySet();
        for (Object key : map.keySet()){
            System.out.println(key+"-->"+map.get(key));
        }
    }
}

 运行结果:

二、原理

1、

首先将key和value封装成一个node,将key进行运算得到一个特定的hash值。

在经过mod运算得到一个数值,在一个数据结构为数组的桶中找到下表标为该数值的结点,将键值对连接在该结点后面;如果该结点后已经存过键值对,就在后面连接成链表格式。

如果同一结点后面的键值对数量过多,也就是链表过长,会使操作时间变长过于复杂,所以采取红黑树的形式,便于查找;

2、

红黑树是一种平衡二叉查找树,便于查找,运行高效。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幼儿园大哥7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值