码迷,mamicode.com
首页 > 其他好文 > 详细

栈的简单理解

时间:2020-05-02 21:17:06      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:alt   turn   理解   ima   item   src   数据   建议   lifo   

栈(Stack)是一个后进先出(LIFO)的数据结构,直接上图

技术图片

简单来说栈只有两种操作,出栈和入栈,直接来看一下java.util.Stack里面的实现。

class Stack<E> extends Vector<E> 

Stack继承自Vector一个线程安全的容器(动态数组)

public E push(E item) {
    addElement(item);

    return item;
}

入栈操作,调用了Vector的addElement函数,向动态数组末尾添加一个元素

public synchronized E pop() {
    E       obj;
    int     len = size();

    obj = peek();
    removeElementAt(len - 1);

    return obj;
}

出栈操作,移除动态数组末尾的一个元素,removeElementAt同样是Vector的函数,数组的一些操作在之前的数组篇有讲过,重点大都在扩容方面,线程安全的数组就是在相关方法上添加了sychornized。

总结

栈的操作比较简单,理解起来也不是很难,也是一个很有用的数据结构,java里官方在实际使用的时候建议使用Deque,因为Vector使用了sychornized所以性能上不是很好,如果使用链表来实现栈的话,增加容量会更方便,具体使用数组还是链表的实现还是要按照实际业务。

栈的简单理解

标签:alt   turn   理解   ima   item   src   数据   建议   lifo   

原文地址:https://www.cnblogs.com/ljsh/p/12819326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!