Java-Map-详解

本文详细介绍了Java中的Map数据结构,包括Map的分类如HashMap、Hashtable、TreeMap等,讲解了哈希概念、散列表和冲突解决策略。还探讨了Map子类的特性,如线程安全性、null值处理,并提供了多种Map遍历方式。
摘要由CSDN通过智能技术生成

Map架构图

在这里插入图片描述

在这里插入图片描述

Map是(key,value)形式的数据结构,Map与Collection接口是平级的,而且两者有关联,
Collection框架中的Set的实现类都是基于Map来实现的。例如(HashSet基于HashMap实现,LinkedHashSet基于LinkenHashMap实现。)

Map的分类

Java中有自带的Map类,根据这些类,大致分为三种:

通用Map

java.util中的各种Map,其中有HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap

专用Map

通常我们不必亲自创建此类Map,而是通过某些其他类对其进行访问

java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults

扩展Map

一个用于帮助我们实现自己的Map类的抽象类

AbstractMap

Hash(散列/哈希)的概念

何为hash

想要清楚Map的数据结构,哈希是基本概念,我们先来看看何为哈希
hash翻译为"散列",也有直接音译为"哈希",就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。这是一种压缩机制,因为散列值所占用的空间远小于输入值所占的空间,不同的输入可能形成相同的散列值,所以不能通过散列值来确定唯一的输入值。简单来说,hash就是将任意长度消息压缩为固定长度消息摘要的函数。

散列表

散列表(hash table 也叫哈希表)是通过关键(key,value)key值直接访问的数据结构。它通过将关键key值映射到表中的位置来访问数据,来加快访问速度,这个映射函数叫做散列函数,存储散列值的数组叫做散列表。

拉链法解决冲突

既然我们知道,不同的输入值可能产生相同的散列值,那就产生了冲突问题,针对这个问题,可以使用拉链法解决。解决方式为

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值