纯手写HashMap集合

HashMap的实例有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101[1]。

2迭代器

由所有此类的“collection视图方法”所返回的迭代器都是快速失败的:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器本身的remove方法,而不冒在将来不确定的时间发生任意不确定行为的风险。

注意,迭代器的快速失败行为不能得到保证,一般来说,存在非同步的并发修改时,编写依赖于此异常的程序的做法是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测程序错误。

遍历Hash中的元素

在Hash中可以直接使用一下方法遍历(所有键)KeySet

然后通过键可以找出需要的值

HashMapmp=newHashMap();

for(Stringi:mp.keySet()){//String是mp中的键的对应类型i是对应的KeySet中的每一个键值System.out.println(mp.get(i));}

3同步机制

注意,此实现不是同步的。[2]如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的任何操作;以防止对映射进行意外的非同步访问,如下所示:

Mapm=Collections.synchronizedMap(newHashMap(...));

纯手写HashMap集合_第1张图片

第一节(基于LinkedList实现HasMap-项目演示)

第二节(基于LinkedList实现HasMap-数组数据结构)

第三节(基于LinkedList实现HasMap-基于Arraylist实现HashMap)

第四节(基于LinkedList实现HasMap-链表数据结构)

第五节(基于LinkedList实现HasMap-使用hash算法存储)

第六节(基于LinkedList实现HasMap-解决hashCode碰撞冲突)

第七节(基于LinkedList实现HasMap-实现add和get方法)

第八节(纯手写JDK1.7版本HasMap集合框架-项目演示)

第九节(纯手写JDK1.7版本HasMap集合框架-HashMap底层源码分析)

第十节(纯手写JDK1.7版本HasMap集合框架-创建HashMapEntry对象)

第十一(纯手写JDK1.7版本HasMap集合框架-Put方法底层实现)

第十二节(纯手写JDK1.7版本HasMap集合框架-打印链表信息)

第十三(纯手写JDK1.7版本HasMap集合框架-Put方法遍历子Node)

第十四节(纯手写JDK1.7版本HasMap集合框架-get方法实现)

第十五节(纯手写JDK1.7版本HasMap集合框架-扩容机制原理)

第十六节(纯手写JDK1.7版本HasMap集合框架-扩容底层实现)

第十七节(纯手写JDK1.7版本HasMap集合框架-对比分析JDK源码

你可能感兴趣的:(java,HashMap,HashMap集合,纯手写HashMap集合)