HashMap的内部结构

ArrayList:数组 values[] 

LinkedList:first,last;     Node{item,pre,next};

HashMap:key-values

内部类,Node是对key,value的封装,同时,他也是链表的一个结点;

内部结构

        内部由一个Node数组来存储数据,长度默认为16;

        当向hashmap中增加一个key时,先计算出他的hash码,根据hash码及数组的长度来计算出元素的位置,如果此位置无数据则直接放在此位置,如果有数据再使用equals进行逐个比较,相同则替换,都不相同,则使用尾插法,插入到链表的尾部;

        关于查找,也是先计算出hash码,再模上长度, 去此位置中查找;   

        关于自扩容,默认的加载因子是0.75,超过当前容量的75%,就是扩展2倍;

        当链表的长度超过8时,将链表转成树结构(红黑树);

hash冲突

        尽量减小,优化hash算法;

        使用链表来解决,如果长度超过8,转换成树结构(面试);

Hashable

        与Hashmap相同,线程安全,已弃用;

SortedMap

排序的Map接口,根据key的自然顺序或key的自定义比较器来排序;

方法:

        firstkey();

        lastkey();

        headMap();

        tailMap();

        SubMap();

TreeMap

        TreeMap是SortedMap的实现类;

小结

        HashSet内部使用HashMap来实现,只用到了key;

        TreeMap内部使用TreeMap来实现,只用到了key;

线性表

        数组

        链表

        队列

        栈

        树

                二叉树

                红黑树

                平衡二叉树

hsah表:

hashMap,key-value,查询的时间复杂度是O(1);

算法

        暴力

        双指针

        hash

        单调栈

        剪枝

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值