概述
栈的基本操作
栈是一种先进后出的数据结构
常用方法:
isEmpty();//栈是否为空
peek();//查询栈顶元素,不变栈
pop();//弹出栈顶元素,改变栈
push();//压入栈顶
size();//栈中元素的个数
Stack<Integer> stack = new Stack<Integer>();
//判断空栈
if(stack.isEmpty()){
System.out.println("空栈");
}
//压入元素
stack.push(1);
stack.push(2);
stack.push(3);
//栈存储元素的个数
System.out.println(stack.size());
//输出栈顶元素不删除
System.out.println(stack.peek());
//输出栈顶元素并删除
System.out.println(stack.pop());
System.out.println("弹出一个元素后剩余栈的高度:"+stack.size());
//输出栈 返回栈的字符 [,,,,]数组形式
System.out.println(stack);
//查看元素在栈中的位置,在栈中从上往下数
System.out.println("1在栈中的位置:"+stack.search(1));
//add方法也是向栈顶添加一个元素,返回值为true
System.out.println(stack.add(3));
System.out.println(stack);
//addElement等价于push
stack.addElement(4);
System.out.println(stack);
//栈的遍历,从栈顶挨个弹出元素
while(!stack.isEmpty()){
System.out.println(stack.pop());
}
push()和add()和addElement的区别
向栈顶添加元素有push和add和addElement ,说说他们的区别
push是java标准栈中的向栈顶压入元素,看Stack源码:
public Object push(Object obj) {
addElement(obj);
return obj;
}
实际上push和addElement是一样的
再看看他们的继承关系
public class Stack extends Vector
public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable
public interface List extends Collection
addElement是Vector类中特有的方法,实现如下
public synchronized void addElement(Object obj) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = obj;
}
实际上就是数组的长度加1将元素添加在数组尾部
至于add方法的实现也是在Vector类中,它是实现list接口中的add的抽象方法
在List接口中定义如下:
public abstract boolean add(Object obj);
在Vector类中实现如下:
public synchronized boolean add(Object obj) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = obj;
return true;
}
可以看到实现方式是一直的,只不过add方法有返回值为true
由此可见这三种方法都是向栈顶压入元素
最后
以上就是繁荣蜡烛为你收集整理的JAVA中栈的基本操作的全部内容,希望文章能够帮你解决JAVA中栈的基本操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复