Hashmap的学习理解

一、Hashmap的简介概况

1.Hash简介

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。

HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”,容量 是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度,通常,默认加载因子是 0.75。

2.HashMap的构造函数

一共有四个构造函数

// 默认构造函数。
HashMap()

// 指定“容量大小”的构造函数
HashMap(int capacity)

// 指定“容量大小”和“加载因子”的构造函数
HashMap(int capacity, float loadFactor)

// 包含“子Map”的构造函数
HashMap(Map<? extends K, ? extends V> map)

3.Hashmap的API

void              clear()  //清空HashMap
Object            clone()    //克隆一个HashMap对象并返回
boolean           containsKey(Object key)  //判断HashMap是否包含key。
boolean           containsValue(Object value)  //判断HashMap是否包含“值为value”的元素。
Set<Entry<K, V>>  entrySet()  //返回“HashMap中所有Entry的集合”,它是一个集合
V                 get(Object key)  //获取key对应的value
boolean           isEmpty()
Set<K>            keySet()
V                 put(K key, V value)  //对外提供接口,让HashMap对象可以通过put()将“key-value”添加到HashMap中
void              putAll(Map<? extends K, ? extends V> map)  //将"m"的全部元素都添加到HashMap中
V                 remove(Object key)  //删除“键为key”元素
int               size()
Collection<V>     values()

二、HashMap的数据结构

HashMap与Map关系如下图

从图中可以看出: 
(01) HashMap继承于AbstractMap类,实现了Map接口。Map是"key-value键值对"接口,AbstractMap实现了"键值对"的通用函数接口。 
(02) HashMap是通过"拉链法"实现的哈希表。它包括几个重要的成员变量:table, size, threshold, loadFactor, modCount。
  table是一个Entry[]数组类型,而Entry实际上就是一个单向链表。哈希表的"key-value键值对"都是存储在Entry数组中的。 
  size是HashMap的大小,它是HashMap保存的键值对的数量。 
  threshold是HashMap的阈值,用于判断是否需要调整HashMap的容量。threshold的值="容量*加载因子",当HashMap中存储数据的数量达到threshold时,就需要将HashMap的容量加倍。
  loadFactor就是加载因子。 
  modCount是用来实现fail-fast机制的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值