JAVA源码中线性表,栈和队列的实现及其对应的源码文件

来源:互联网 发布:sony vegas for mac 编辑:程序博客网 时间:2024/05/17 16:55

     在数据结构中,线性表是一种比较简单的数据存储方式。按照其物理与逻辑存储顺序,可以分为顺序表和链表。顺序表比较适合求表长,访问表中的元素可修改表中的元素。难于对表进行插入和删除。而链表正好与之相反。链表又可以分为单向链表与双向链表。双向链表解决了单链表不能查找表中元素的直接前驱问题,但是需增加内存存储,增加了空间的开销。顺序表和链表对应JAVA中的java.util这个包中的两个类,分别是ArrayList类和LinkedList类的实现。栈和队列是两种特殊的线性表,栈遵循的是先进后出的原则,队列是先进先出的原则。在JAVA中,提供两种栈给开发者使用,一种是java.util.Stack.还有一种我们分析LinkedList中的源码时可以发现,该类也包含有pop.push.peek等方法。因此也可以用LinkedList类来构造栈。有一个区别是java.util.Stack来构造栈时可以适用于多线程,而java.util.LinkedList构造栈多线程访问时是不安全的,可使用Collection类中的方法改进。

J   DK虽然提供了stack类,但是不推荐开发者使用这个古老的栈,而是使用deque接口实现的类来构造栈。deque提供了arrayDeque,LinkedBlockingDeque和LinkedList这三个实现类。其中arrayDeque代表顺序存储结构的双向队列,linkedList则代表链式存储结构的双向队列,linkedblockingDeque其实是一种线程安全的,链式结构的双向队列。


0 0
原创粉丝点击