栈的实现有两种:顺序栈和链栈
由于栈不需要实现随机存取功能,只需要从栈顶插入、删除元素,因此顺序就够所提供的高效存取就没有太大的价值,即使采用链式结构的实现,程序同样可以高效的出入栈。
对于链栈而言,底层链式结构只需要保存几个节点,每个节点需要额外添加一个next引用,会引起部分空间浪费;但对于顺序栈来说,程序开始就需要在底层开辟一块连续的内存,这种空间浪费更多。从空间利用率的角度来看,链栈的空间利用率比顺序栈的空间利用率高一些。
队列:
Java提供了Queue的接口,并实现了众多的类,常用的有:ArrayBlockingQueue、LinkBlockingQueue和ConcurrentLinkQueue,它们都是线程安全的队列。还提供了一个双向队列(Deque)接口,既可以当队列使用,也可以放栈使用,JDK提供了ArrayDeque、LinkBlockingDeque和LinkList三个实现类,对于栈,已经不再推荐使用Stack而用Deque代替了。LinkList是一个功能非常强大的集合类但性能可能比不上ArrayDeque和ArrayList。
本文探讨了栈的两种实现方式:顺序栈与链栈,对比了它们的空间利用率,并介绍了Java中队列的多种实现形式,包括ArrayBlockingQueue、LinkBlockingQueue等线程安全队列。
384

被折叠的 条评论
为什么被折叠?



