随笔分类 -  数据结构

摘要:目录 1.ConcurrentMap的内部结构 2.ConcurrentMap构造函数 3.元素新增策略4.元素删除5.元素修改和查找6.特殊操作7.扩容8.总结 1.ConcurrentMap内部结构 继承自abstractMap,实现concurrentMap接口,父类和hashmap相似 在开 阅读全文
posted @ 2019-10-24 15:40 cutter_point 阅读(240) 评论(0) 推荐(0)
摘要:目录 1.TreehMap的内部结构 2.TreehMap构造函数 3.元素新增策略 4.元素删除 5.元素修改和查找 6.特殊操作 7.扩容 8.总结 1.TreeMap的内部结构 首先确认一点,treemap是一个基于红黑树的map,这个集合的一个特点就是排序,是的如果不是排序,那么hashma 阅读全文
posted @ 2019-10-08 09:40 cutter_point 阅读(249) 评论(0) 推荐(0)
摘要:目录 1.LinkedHashMap的内部结构 2.LinkedHashMap构造函数 3.元素新增策略 4.元素删除 5.元素修改和查找 6.特殊操作 7.扩容 8.总结 1.LinkedHashMap的内部结构 对象的内部结构其实就是hashmap的内部结构,但是比hashmap的内部结构nod 阅读全文
posted @ 2019-09-03 17:05 cutter_point 阅读(350) 评论(0) 推荐(0)
摘要:1.hashtable的内部结构 基础存储数据的hash桶由Entry结构的数组存放而entry数据结构,有hash,key和value,还有一个指向下一个节点的引用next对象 这里就和hashmap中的数据结构不一样了,hashmap中的数据结构是node,虽然结构上差不多,但是setvalue 阅读全文
posted @ 2019-08-27 17:24 cutter_point 阅读(341) 评论(0) 推荐(0)
摘要:1.hashmap的底层数据结构 众所皆知map的底层结构是类似邻接表的结构,但是进入1.8之后,链表模式再一定情况下又会转换为红黑树在JDK8中,当链表长度达到8,并且hash桶容量超过64(MIN_TREEIFY_CAPACITY),会转化成红黑树,以提升它的查询、插入效率底层哈希桶的数据结构是 阅读全文
posted @ 2019-08-22 18:58 cutter_point 阅读(371) 评论(0) 推荐(0)
摘要:关于LinkedList的源码关注点 1.从底层数据结构,扩容策略2.LinkedList的增删改查3.特殊处理重点关注4.遍历的速度,随机访问和iterator访问效率对比 1.从底层数据结构,扩容策略 构造函数不做任何操作,只要再add的时候进行数据初始化操作,以操作推动逻辑,而且linkedl 阅读全文
posted @ 2019-08-16 18:03 cutter_point 阅读(221) 评论(0) 推荐(0)
摘要:关于ArrayList的源码关注点 1.从底层数据结构,扩容策略2.ArrayList的增删改查3.特殊处理重点关注4.遍历的速度,随机访问和iterator访问效率对比 1.从底层数据结构,扩容策略 对于第一个问题,底层即时一个object的数组,用来存放动态数据: transient Objec 阅读全文
posted @ 2019-08-09 09:01 cutter_point 阅读(171) 评论(0) 推荐(0)
摘要:来来来,今天就跟hashmap杠到底。。。 不要叫我杠精了,主要是还是被问到hashmap的时候,我并不能很清晰明了得告知这种数据结构到底是一个什么构造,里面细节并不了解 既然这样,我们就把他解析一波,今天这篇也算是hashmap的收官之作了,主要用来红黑树部分我之前有博文写过,但是不用深究 自己实 阅读全文
posted @ 2019-06-27 12:01 cutter_point 阅读(788) 评论(2) 推荐(0)
摘要:前提知识 写在前面,为什么num&(length - 1) 在length是2的n次幂的时候等价于num%length n - 1意味着比n最高位小的位都为1,而高的位都为0,因此通过与可以剔除位数比n最高位更高的部分,只保留比n最高位小的部分,也就是取余了。 而且用位运算取代%,效率会比较高。 基 阅读全文
posted @ 2019-06-26 18:10 cutter_point 阅读(3329) 评论(0) 推荐(0)
摘要:最近面试被问到hashmap的实现,因为前段时间刚好看过源码,显得有点信心满满,但是一顿操作下来的结论是基础不够扎实。。。 好吧,因为我开始看hashmap是想了解这到底是一个什么样的机制,具体有啥作用,并没有过于细节去了解,所以问到细节的地方就难免漏洞百出, 回来之后,决定吧容器类的实现原理,去专 阅读全文
posted @ 2019-06-25 11:23 cutter_point 阅读(317) 评论(0) 推荐(0)
摘要:因为最近小米电话面试被问到如何判断一个链表是否有环,那今天正好实现以下这个算法 1.链表 内部类的使用,是为了方便调试 测试类: 结果: 测试一: 测试二: 从这里我们可以判断到第二个方法并不能定位到产生环的节点是哪个节点,并且循环次数比第一个多 总结: 方式一:对空间占用比较大,但是时间复杂度底, 阅读全文
posted @ 2019-06-24 10:23 cutter_point 阅读(458) 评论(0) 推荐(0)
摘要:二叉树节点插入 0.如果只有一个节点,那么就直接作为根,涂黑,如果父为黑,或者祖父为空,那么不做操作 1.叔叔节点不为空且为红 那么就修改父,叔叔,祖父节点颜色,最后把当前节点设置为祖父节点,在进行平衡 2.如果父为右节点,并且叔叔节点为空或者为黑,当前节点是右节点,如果父不为空, 那么把父设置为黑 阅读全文
posted @ 2019-06-05 10:50 cutter_point 阅读(641) 评论(0) 推荐(0)