关于java中 Vector的子类Stack方法的问题
Stack<String>stack=newStack<String>();System.out.println("nowthestackis"+isEmpty(stac...
Stack<String> stack = new Stack<String>();
System.out.println("now the stack is " + isEmpty(stack));
stack.push("1");
stack.push("2");
stack.push("3");
stack.push("4");
stack.push("5");
System.out.println("now the stack is " + isEmpty(stack));
System.out.println(stack.peek());
System.out.println(stack.pop());
System.out.println(stack.ElementAt(2));
System.out.println(stack.search("2"));
问:
1:请分别用白话详细讲下.peek() ,.pop(),ElementAt(2),search("2") 作用?
2:Stack泛型集合是不是可以实现例如:把10条评论放入Stack集合中 然后将最新的一条评论置顶 是否可以用Stack泛型实现呢?或有没有其他实现方式?
另外,看了下jdk帮助文档 :
public E pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
返回:
堆栈顶部的对象(Vector 对象中的最后一项)。
其中这句:“堆栈顶部的对象(Vector 对象中的最后一项)。 ”是什么意思 ?Stack和Vector 对象有什么关系 或者是否可以说Stack继承了Vector的所有方法 然后可以通过Stack.pop()方法来操作Vector集合对象吗? 展开
System.out.println("now the stack is " + isEmpty(stack));
stack.push("1");
stack.push("2");
stack.push("3");
stack.push("4");
stack.push("5");
System.out.println("now the stack is " + isEmpty(stack));
System.out.println(stack.peek());
System.out.println(stack.pop());
System.out.println(stack.ElementAt(2));
System.out.println(stack.search("2"));
问:
1:请分别用白话详细讲下.peek() ,.pop(),ElementAt(2),search("2") 作用?
2:Stack泛型集合是不是可以实现例如:把10条评论放入Stack集合中 然后将最新的一条评论置顶 是否可以用Stack泛型实现呢?或有没有其他实现方式?
另外,看了下jdk帮助文档 :
public E pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
返回:
堆栈顶部的对象(Vector 对象中的最后一项)。
其中这句:“堆栈顶部的对象(Vector 对象中的最后一项)。 ”是什么意思 ?Stack和Vector 对象有什么关系 或者是否可以说Stack继承了Vector的所有方法 然后可以通过Stack.pop()方法来操作Vector集合对象吗? 展开
2015-07-08 · 知道合伙人软件行家
关注
展开全部
java.util.Stack 类是Vector的子类,Stack 类表示后进先出(LIFO)的对象堆栈。
它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。
首次创建堆栈时,它不包含项。
Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。
首次创建堆栈时,它不包含项。
Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stack.peek():查看堆栈顶部的对象,但不从堆栈中移除它。
stack.pop(): 移除堆栈顶部的对象,并作为此函数的值返回该对象。
stack.elementAt(2):返回对象在堆栈中的位置,以 0 为基数(自下而上)
stack.search("2"):返回对象在堆栈中的位置,以 1 为基数。 (自上而下)
可以用泛型实现。stack.peek(),这个方法是很好使的。别的方法也是有的。你可以定去字符串数组什么的,取最后一条记录也可以。
栈是先进后出的,所以最后一项肯定在栈的顶部。但往Vector赋值的时候, 一般都是从小到大依次赋值。所以就是“堆栈顶部的对象(Vector 对象中的最后一项)”。
Stack继承了Vector类,所以他具有Vector的属性和方法。
stack.pop(): 移除堆栈顶部的对象,并作为此函数的值返回该对象。
stack.elementAt(2):返回对象在堆栈中的位置,以 0 为基数(自下而上)
stack.search("2"):返回对象在堆栈中的位置,以 1 为基数。 (自上而下)
可以用泛型实现。stack.peek(),这个方法是很好使的。别的方法也是有的。你可以定去字符串数组什么的,取最后一条记录也可以。
栈是先进后出的,所以最后一项肯定在栈的顶部。但往Vector赋值的时候, 一般都是从小到大依次赋值。所以就是“堆栈顶部的对象(Vector 对象中的最后一项)”。
Stack继承了Vector类,所以他具有Vector的属性和方法。
追问
1:stack.pop(): 移除堆栈顶部的对象,并作为此函数的值返回该对象。 是什么意思 可否举个例子?
2:stack.elementAt(2):
stack.search("2"):
这两个方法的参数是访问的stack对象的下标吗?
追答
你上句不是写了吗?你打印一下长度就看出来了,移除就是把那个节点移走了。
System.out.println(stack.peek()); //查看堆栈顶部的对象,但不从堆栈中移除它。
System.out.println("--"+stack.size());
System.out.println(stack.pop()); //移除堆栈顶部的对象,并作为此函数的值返回该对象。
System.out.println("----"+stack.size());
这样一试你就看出来了。
stack.elementAt(2):返回对象在堆栈中的位置,以 0 为基数(自下而上)
stack.search("2"):返回对象在堆栈中的位置,以 1 为基数。 (自上而下)
我说的很清楚了吧。stack.elementAt(2),这个你可以当做下标来看(从栈底开始数),下标从0开始。stack.search("2"):得从后往前倒着数(及从栈顶开始数),并且从1开始。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询