数据结构
Viking_gf
这个作者很懒,什么都没留下…
展开
-
Vector,ArrayList,LinkedList,SynchronizedList
总体来说,Vector和ArrayList是一致的,实现的接口也是完全一样,内部的存储结构也基本一致【都是数组】,每个方法的实现也几乎相同。 区别在于,Vector是线程安全的,每个方法都加了synchronized修饰符,而ArrayList没有。 而且Vector是JDK1.0引入的,而ArrayList是JDK1.2引入的。 ======转载 2017-05-02 13:42:32 · 266 阅读 · 0 评论 -
HashMap与HashTable的区别
首先,从JDK源码来看,HashMap和HashTable都实现了Map接口: 可以看出,HashTable是从JDK1.0就有的,HashMap而是从JDK1.2才有的。 二者实现的接口一致。 因此,对外方法API也基本一致: 内部存储方式也基本一致,都是邻接表形式: 基本操作也基本一致,以put方法为例,都是先算Key的转载 2017-05-02 13:35:47 · 196 阅读 · 0 评论 -
HashMap多线程死循环问题
正如上篇文中所说,HashMap不是线程安全的,在被多线程共享操作时,会有问题,具体什么问题呢,一直没有个清晰的理解,今天写了个测试程序调了一下,才明白其中道理。 主要是多线程同时put时,如果同时触发了rehash操作,会导致HashMap中的链表中出现循环节点,进而使得后面get的时候,会死循环。【关于什么是rehash,读者可以自行去google了】 本文主要参考了:http:/转载 2017-05-02 12:59:31 · 408 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。 ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2017-05-02 12:49:54 · 214 阅读 · 0 评论 -
常见数据结构与算法整理总结(上)
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出。 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表、栈、队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需转载 2017-05-02 00:08:44 · 617 阅读 · 0 评论 -
常见数据结构与算法整理总结(下)
这篇文章是常见数据结构与算法整理总结的下篇,上一篇主要是对常见的数据结构进行集中总结,这篇主要是总结一些常见的算法相关内容,文章中如有错误,欢迎指出。 一、概述 二、查找算法 三、排序算法 四、其它算法 五、常见算法题 六、总结 一、概述 以前看到这样一句话,语言只是工具,算法才是程序设计的灵魂。的确,算法在计算机科学中的地位真的很重要,在很多大公司的笔试面试中,算法掌握程度的考转载 2017-05-02 00:08:08 · 497 阅读 · 0 评论 -
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关转载 2017-04-30 14:23:18 · 214 阅读 · 0 评论