赞
踩
本文源码采用jdk1.8
上面两篇介绍了Collection下的list,不接着介绍Collection下的set,因为Set集合实际上就是HashMap来构建的!前面讲解了:
Java集合是Java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*,Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。
原本我是打算先写Collection下的Set集合的,结果看了源码发现:Set集合实际上底层就是HashMap来构建的!
所以,就先介绍Map集合和红黑树吧!
前面我们学习的Collection叫做集合,它可以快速查找现有的元素。
Map 是一组成对的“键值对”对象,允许使用键 (key) 来查找值 (value)。它提供了一个映射表,可以通过某个对象来查找另一个对象。它也被称作关联数组,因为它将某些对象与另外一些对象关联在一起
Map基本特性:
以 key-value 键值对的形式存储数据,可通过 key 来查找 value
键唯一,值不唯一。即一个键只能映射一个值,一个值可以对应多个键\
无法保证元素的存入顺序
映射的模型图是这样的:
那为什么我们需要这种数据存储结构呢?举个例子
生活中,一个身份证号证明一个人的身份,一一对应
下面用红色框框圈住的就是Map值得关注的子类:
****这只是集合包下的,是线程不安全的,在并发包下还有线程安全的ConcurrentHashMap,下面我会介绍的~
散列表是一种不在意元素的顺序,能够快速的查找元素的数据结构
散列表为每个对象通过哈希函数计算出一个整数,称为散列码。根据这些计算出来的整数(散列码)保存在对应的位置上!
在Java中,散列表用的是链表数组实现的,每个列表称之为桶。每个桶都可能会出现被别的元素占用的情况,即此时hashCode散列码相同,会存储在同一个位置,这个现象叫散列冲突。
Hashmap定义:
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。