您的位置 首页 java

集合篇-Stack(JAVA)

前言

Stack类从命名就可以很清晰的定位成栈,栈的特性是先进后出或者后进先出。而且从 jdk 给出的文档也很清楚的知道它的一些特性。

demo案例执行结果

源码解析

从下面的图中就可以很清楚的知道Stack是继承 Vector ,所以它是拥有Vector相关的一些特性和方法;再者就是它也是 线程安全 类。

Stack类中主要的几个方法push、pop、peek、empty、search

1、push方法

 //向栈中添加一个元素
public E push(E item) {
  	//这里直接调用了父类Vector的addElement方法
    addElement(item);
    return item;
}  
 // java .util.Vector#addElement
public  synchronized   void  addElement(E obj) {
    modCount++;
    add(obj, elementData, elementCount);
}  

2、peek

 //获取数组中的最后一个元素,来实现栈的后进先出的特性
//注意,使用前需要对数组判空处理,否则会抛EmptyStackException
public synchronized E peek() {
    int     len = size();

    if (len == 0)
        throw new EmptyStack Exception ();
  	//这里是直接调用Vector类中的elementAt方法
    return elementAt(len - 1);
}  

3、pop

 //获取并删除数组中最后一个元素,
//注意,使用前需要对数组判空处理,否则会抛EmptyStackException
public synchronized E pop() {
    E       obj;
    int     len = size();
		//获取数组中最后一个元素
    obj = peek();
  	//删除数据中最后一个元素
    removeElementAt(len - 1);
    return obj;
}  

4、search

 //获取元素最后的位置下标
public synchronized int search(Object o) {
    int i = lastIndexOf(o);

    if (i >= 0) {
        return size() - i;
    }
    return -1;
}  

总结

其实Stack是 线程 安全的,继承类Vector类,拥有栈特性(先进后出或者后进先出)。

上面就是对Stack类简单的介绍,如果有兴趣或者理解不对的地方可以留言。

文章来源:智云一二三科技

文章标题:集合篇-Stack(JAVA)

文章地址:https://www.zhihuclub.com/195596.shtml

关于作者: 智云科技

热门文章

网站地图