首页 > 社交 > 科普中国

集合篇

常驻编辑 科普中国 2022-05-05 下标   后进   数组   线程   前言   源码   特性   元素   先进   方法

前言

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

9j0拜客生活常识网

demo案例执行结果

9j0拜客生活常识网

源码解析

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

9j0拜客生活常识网

Stack类中主要的几个方法push、pop、peek、empty、search9j0拜客生活常识网

1、push方法9j0拜客生活常识网

//向栈中添加一个元素
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、peek9j0拜客生活常识网

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

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

3、pop9j0拜客生活常识网

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

4、search9j0拜客生活常识网

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

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

总结

其实Stack是线程安全的,继承类Vector类,拥有栈特性(先进后出或者后进先出)。9j0拜客生活常识网

上面就是对Stack类简单的介绍,如果有兴趣或者理解不对的地方可以留言。9j0拜客生活常识网

相关阅读:

  • word下标怎么打(word上下角标怎么打)
  • 后入疼为什么(后进位为什么疼)
  • 恒生指数跌破18000点,刷新近11年低点
  • 缓解便秘椰汁红豆薏米捞
  • 如何输入数组(如何将数字输入数组)
  • 指针怎么用 c语言指针与一维数组?
  • java
  • GO学习
  • 技巧篇:常用的vba代码汇总
  • JavaScript中的数据类型判断
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。