java数据结构

本博参考:http://blog.csdn.net/qq_28057577/article/details/52692089

概图

数组:
特点:元素在内存中线性连续存储,可以根据下标快速访问数组元素,但是增删效率不是很高,每一次增加或删除元素都需要
大量移动元素空出插入位置或者填补删除元素的位置。

使用场景:频繁查询,很少进行增加或删除操作的情况

 

链表:
特点:存储可以不连贯,根据索引将数据联系起来,当查询元素的时候需要从开头开始去查询,所以效率比较低,然而增加或删除
元素的时候只需要修改索引就可以了。
使用场景:少查询,需要频繁插入或删除的情况

 

队列:
特点:先进先出(FIFO/fisrt in first out),如同一个单向隧道,先进的车先出。

使用场景:多线程的阻塞队列管理非常有用

栈:
特点:后进先出(LIFO/last in first out),就像一个箱子,先放进去的东西在底部,需要先拿出上面的东西,下面的东西才能拿出来

使用场景:实现递归以及表达式计算,android运用栈的原理实现back stack

.数组与链表的区别
(1)数组连续,链表不连续
(2)数组内存静态分配,链表内存动态分配
(3)数组查询时间复杂度为O(1),链表为0(n)
(4)数组增加删除的时间复杂度为O(n),链表为O(1)

(5)数组从栈中分配空间,链表从堆中分配空间

posted @ 2017-08-10 16:22  青春不打烊  阅读(150)  评论(0编辑  收藏  举报