java collections读书笔记(4) stack
stack,是先進后出的一個堆棧,可是,因為他繼承自vector,所以,vector很多功能他都具有。
stack和vector的關系應該是 has-a,而不是is-a
簡單的操作有,push,top等
見例子如下:
import java.util.Stack;
public class StackExample {
public static void main (String args[]) {
Stack s = new Stack();
s.push("Autumnal Tints");
s.push("A Week on the Concord and Merrimack Rivers");
s.push("The Maine Woods");
// Check out what's next to read
System.out.println("Next: " + s.peek());
s.push("Civil Disobedience, Solitude and Life Without Principle");
// Read a book
System.out.println(s.pop());
s.push("Walden");
s.push("The Natural Man");
// Find that other book
int count = s.search("The Maine Woods");
while (count != ?1 && count > 1) {
s.pop();
count?;
}
// Read a book
System.out.println(s.pop());
// Anything left?
System.out.println(s.empty());
}
}
看看源代碼,不復雜:
public
class Stack<E> extends Vector<E> {
??? /**
???? * Creates an empty Stack.
???? */
??? public Stack() {
??? }
??? /**
???? * Pushes an item onto the top of this stack. This has exactly
???? * the same effect as:
???? * <blockquote><pre>
???? * addElement(item)</pre></blockquote>
???? *
???? * @param?? item?? the item to be pushed onto this stack.
???? * @return? the <code>item</code> argument.
???? * @see???? java.util.Vector#addElement
???? */
??? public E push(E item) {
??????? addElement(item);
??????? return item;
??? }
??? /**
???? * Removes the object at the top of this stack and returns that
???? * object as the value of this function.
???? *
???? * @return? The object at the top of this stack (the last item
???? *????????? of the <tt>Vector</tt> object).
???? * @throws? EmptyStackException? if this stack is empty.
???? */
??? public synchronized E pop() {
??????? E?????? obj;
??????? int???? len = size();
??????? obj = peek();
??????? removeElementAt(len - 1);
??????? return obj;
??? }
??? /**
???? * Looks at the object at the top of this stack without removing it
???? * from the stack.
???? *
???? * @return? the object at the top of this stack (the last item
???? *????????? of the <tt>Vector</tt> object).
???? * @throws? EmptyStackException? if this stack is empty.
???? */
??? public synchronized E peek() {
??????? int???? len = size();
??????? if (len == 0)
??????????? throw new EmptyStackException();
??????? return elementAt(len - 1);
??? }
??? /**
???? * Tests if this stack is empty.
???? *
???? * @return? <code>true</code> if and only if this stack contains
???? *????????? no items; <code>false</code> otherwise.
???? */
??? public boolean empty() {
??????? return size() == 0;
??? }
??? /**
???? * Returns the 1-based position where an object is on this stack.
???? * If the object <tt>o</tt> occurs as an item in this stack, this
???? * method returns the distance from the top of the stack of the
???? * occurrence nearest the top of the stack; the topmost item on the
???? * stack is considered to be at distance <tt>1</tt>. The <tt>equals</tt>
???? * method is used to compare <tt>o</tt> to the
???? * items in this stack.
???? *
???? * @param?? o?? the desired object.
???? * @return? the 1-based position from the top of the stack where
???? *????????? the object is located; the return value <code>-1</code>
???? *????????? indicates that the object is not on the stack.
???? */
??? public synchronized int search(Object o) {
??????? int i = lastIndexOf(o);
??????? if (i >= 0) {
??????????? return size() - i;
??????? }
??????? return -1;
??? }
??? /** use serialVersionUID from JDK 1.0.2 for interoperability */
??? private static final long serialVersionUID = 1224463164541339165L;
}
轉載于:https://www.cnblogs.com/aomi/archive/2013/06/14/3135368.html
總結
以上是生活随笔為你收集整理的java collections读书笔记(4) stack的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9i DB_FILE_MULTIBLOC
- 下一篇: Unity3D学习笔记(一) 模型和贴图