数据结构
Danny_idea
热爱技术,热爱生活,一步一个脚印。
更多宝贵知识记录可以关注个人公众号:Idea的技术分享
展开
-
关于bitmap,布隆过滤器
什么是bit,什么是byte?bit中文名称是位,音译“比特”,是用以描述电脑数据量的最小单位。在二进制数系统中,每个0或1就是一个位(bit)。bit 来自binary digit (二进制数字),1byte=8bit,byte是计算机里面的基本单位,1mb=1024*1024bit。假设当我们需要在一千万个整数(整数的范围在1-1亿之间)里面快速查找某个整数是否存在于其中的话,如...原创 2019-04-01 16:17:33 · 2750 阅读 · 4 评论 -
重复造轮子(1) --- 手写HashMap
手写Hashmap代码:首先我们需要了解jdk里面hashmap的源码部分,如果对于hashmap的源码有了解的朋友,就应该会知道hashmap里面的这段代码: 是的,这是一段经典的node节点代码,我们可以吧hashmap看成一个存储单向链表的数组,然后每个链表里面的元素都是包含有相应的k v值。参考源码的内容,我写了一小段自己关于hashmap的设计代码:首先是一个父类接口的设计:/** *...原创 2018-07-04 10:49:50 · 1703 阅读 · 1 评论 -
HashSet的底层原理
众所周知,hashset里面存储的元素都具有无序性,标识唯一性。但最近仔细研究了一下java里面的hashset,发现hashset里面大多数的内容都是在hashmap的基础上进行修改的。接下来是hashset的源码展示:package java.util;import java.io.InvalidObjectException;/** * This class ...原创 2018-07-04 11:04:42 · 12380 阅读 · 0 评论 -
聊聊ArrayList的问题
List这种数据结构可以说在我们的实际工作中经常会使用到,最常见的就是ArrayList和LinkedList两种实现类了,两种结构的操作看似相似,但是原理却差别巨大。关于这两者的差别,小编特意总结了一些干货和各位读者们进行分享。ArrayList和LinkedList的区别?通过阅读util包里面的源码可以很容易的看出两者的大致区别:ArrayList是一种具有动态扩容特...原创 2019-03-15 07:40:40 · 361 阅读 · 0 评论 -
ARTS-5-算法练习-二叉树的前序遍历和后序遍历
概述:左耳朵耗子专栏《左耳听风》用户自发每周完成一个ARTS:1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文章Algorithm题目概述:Given a binary tree, return thepostor...原创 2019-05-01 23:16:06 · 212 阅读 · 0 评论 -
堆排序--从理论到实践
什么是堆堆的基本特点有以下两项:1.堆是一颗完全二叉树。2.堆里面的每个节点都要大于或等于(或者小于等于)其子树节点的每个节点值。什么是完全二叉树要求除了最后一层以外,其余层的节点都要是满的。大顶堆每个节点的值都大于其子节点的值,我们通常称之为大顶堆。小顶堆每个节点的值都小于其子节点的值,我们通常称之为小顶堆。那么我们该如何来进行一个堆的构建呢?先别急,我们来了解以下的几个...原创 2019-05-17 18:48:17 · 183 阅读 · 1 评论 -
lucene从理论到实践
lucene里面常用的功能总结:首先我们需要导入相关的依赖配置信息: <!--核心jar包--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artif...原创 2019-05-23 15:07:31 · 233 阅读 · 0 评论 -
ARTS-7-算法练习-二叉树查找最小深度
概述:左耳朵耗子专栏《左耳听风》用户自发每周完成一个ARTS:1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文章Algorithm题目概述:A linked list is given such that each node c...原创 2019-06-02 23:11:20 · 188 阅读 · 0 评论 -
ARTS-13-LRU算法的学习
概述:左耳朵耗子专栏《左耳听风》用户自发每周完成一个ARTS:1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文章Algorithm题目概述:实现一段lru缓存的功能package 算法部分.缓存淘汰算法.LRU;imp...原创 2019-07-23 00:06:48 · 119 阅读 · 0 评论