集合篇-Stack(JAVA)

前言

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

集合篇-Stack(JAVA)

demo案例执行结果

集合篇-Stack(JAVA)

源码解析

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

集合篇-Stack(JAVA)

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 EmptyStackException();
  	//这里是直接调用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类简单的介绍,如果有兴趣或者理解不对的地方可以留言。

展开阅读全文

页面更新:2024-03-04

标签:下标   后进   数组   线程   前言   源码   特性   元素   先进   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top