Java集合框架数据结构随笔

版权声明:本文为作者原创,转载必须注明出处。

转载请注明出处:https://www.jianshu.com/p/fec3a8c3cc9b


Set:体现集合的概念,无序、唯一性。适合做交、差、并、补的操作

1)HashSet : hashMap实现,基于散列表,存储无序。

判断重复的标准:先hashCode再equals 计算得到的hash值相同的话则会造成散列冲突

2)TreeSet : treeMap   基于排序树,key 有序(升或降):要求存入的元素具备比较大小的能力

3)LinkedHashSet :  LinkedHashMap, 值是按插入的顺序有序的输出

add方法:添加的值做为对应map的key,value是 new Object();

List: 有序、可重复的线性结构

1)ArrayList: 动态数组: 通过 System.arraycopy来实现,改查高效。

如果超过当前的数组的存储长度,那么新建一个数组长度为之前长度的1.5倍,

2) LinkedList: 双向链表, 增删高效。

3) Vector: 动态数组  也是通过 System.arraycopy来实现  ,安全性源于方法都加了锁

Map:体现的是函数的概念:若对X中的每个x,按对应法则f,使Y中存在唯一的一个元素y与之对应 , 就称对应法则f是X上的一个函数,记作y=f(x),体现一种映射关系

HashMap:无序输出;

TreeMap: 按Key排序输出;

LinkedHashMap:根据输入的顺序输出;

HashTable和HashMap区别 :

HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行.

HashMap的数据结构

HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置。HashMap中主要是通过key的hashCode来计算hash值的,只要hashCode相同,计算出来的hash值就一样。如果存储的对象对多了,就有可能不同的对象所算出来的hash值是相同的,这就出现了所谓的hash冲突。学过数据结构的同学都知道,解决hash冲突的方法有很多,HashMap底层是通过链表来解决hash冲突的。

图中,紫色部分即代表哈希表,也称为哈希数组,数组的每个元素都是一个单链表的头节点,链表是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就将其放入单链表中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 前言 这次我和大家一起学习HashMap,HashMap我们在工作中经常会使用,而且面试中也很频繁会问到,因为它里...
    liangzzz阅读 8,025评论 7 102
  • HashMap 是 Java 面试必考的知识点,面试官从这个小知识点就可以了解我们对 Java 基础的掌握程度。网...
    野狗子嗷嗷嗷阅读 6,706评论 9 107
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,525评论 0 3
  • 出身 WebStorm(后面简称WS)出身于大名鼎鼎的JetBrains公司,如果有同学用Java或者Python...
    袋小超阅读 1,303评论 3 4
  • 老话说,三搬当一烧,这样算来我们家被烧了好几次了。 记忆里最早的搬家的印象,是我还不满两岁的时候。那时候,爸妈在一...
    Cathyinbetween阅读 231评论 0 0