转:常见Java数据结构&优缺点 - /画家/ - 博客园
http://www.cnblogs.com/earl-yongchang/p/5639161.html
图片也是引用过来的,没有重新上传
数组
![](https://images2018.cnblogs.com/blog/652963/201808/652963-20180806122737151-794909560.png)
优点:查询快,如果知道索引可以快速地存取
缺点:删除慢,大小固定
有序数组
优点:比无序数组查找快
缺点:删除和插入慢,大小固定
栈
优点:提供后进先出的存取方式
缺点:存取其他项很慢
队列
![](https://images2018.cnblogs.com/blog/652963/201808/652963-20180806123002540-962132685.png)
优点:提供先进先出的存取方式
缺点:存取其他项都很慢
链表
![](https://images2018.cnblogs.com/blog/652963/201808/652963-20180806123048624-1685957394.png)
优点:插入快,删除快
缺点:查找慢(一个个节点查)
二叉树
![](http://bbs.itheima.com/data/attachment/forum/201604/06/154116jxrh00j8zw8xae0j.png.thumb.jpg)
优点:查找,插入,删除都快(平衡二叉树)
缺点:删除算法复杂
红-黑树
![](http://bbs.itheima.com/data/attachment/forum/201604/06/154116t2uo2q29vdcdvr7c.png.thumb.jpg)
优点:查找,插入,删除都快,树总是平衡的(局部调整)
缺点:算法复杂
2-3-4树
优点:查找,插入,删除都快,树总是平衡的。类似的树对磁盘存储有用
缺点:算法复杂
哈希表
![](http://bbs.itheima.com/data/attachment/forum/201604/06/154117nfp8v8o0dmasn9te.png.thumb.jpg)
优点:如果关键字已知则存取速度极快,插入快
缺点:删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分
堆
优点:插入,删除快,对最大数据的项存取很快
缺点:对其他数据项存取很慢
图
优点:对现实世界建模
缺点:有些算法慢且复杂