java的stack
1. java里的stack作用是什麼
stack是java里的一個集合類,用於模擬一個堆棧,存放的信息是後進的元素先出
2. java中Stack的問題
閑著實在無聊......
寫了個簡單的雙鏈表實現Stack。未引用任何包。
public class Main {
public static void main(String[] args) {
Stack s = new Stack();
s.put("abc");//壓棧
s.put("def");//壓棧
s.put("ghi");
System.out.println(s.pop());//出棧
System.out.println(s.isEmpty());//判斷棧是否為空
System.out.println(s.pop());
System.out.println(s.isEmpty());
System.out.println(s.pop());
System.out.println(s.isEmpty());
}
}
class Stack {
private Node root = new Node();
private Node top = root;
public Object pop() {
if(top != null) {
Object value = top.getValue();
top = top.getPrevious();
return value;
} else {
return null;
}
}
public void put(Object value) {
Node n = new Node(top, value);
top.setNext(n);
top = n;
}
public boolean isEmpty() {
return top.getPrevious() == null;
}
}
class Node {
private Node next;
private Object value;
private Node previous;
public Node() {
}
public Node(Node previous, Object value) {
this.previous = previous;
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Node getPrevious() {
return previous;
}
public void setPrevious(Node previous) {
this.previous = previous;
}
}
3. java中stack什麼意思
stack 就是堆棧啊,它應該算是一個容器,用來存儲東西的,他具有先進後出、後進先出的原理!
4. java里Stack類怎麼用啊
如下示例代碼
//
Stackstack=newStack();
Strings1="element1";
Strings2="element2";
stack.push(s1);
stack.push(s2);
現在棧中有兩個元素,棧頂應該是element 2,我們可以通過peek方法看棧頂的元素:
System.out.println(stack.peek());
輸出:
element 2
要看element 1的位置需要使用search方法:
//Findpositionofacertainelement
intpos=stack.search("element1");
System.out.println(pos);
上面代碼將輸出:
2
要移除棧頂的元素應該用pop()方法:
System.out.println(stack.pop());
System.out.println(stack.pop());
輸出:
element 2
element 1
在上一步中棧中的兩個元素都被pop了,現在我們看下empty()方法是否返回true
System.out.println(stack.empty());
輸出:
true
5. stack在java的哪個類中
java.util.Stack 在 jdk java.util 包里來面, 也是 java 集合框架的源重要組成部分
Stack是一個後進先出(last in first out,LIFO)的堆棧,在Vector類的基礎上擴展5個方法而來
Epush(Eitem) 把項壓入堆棧頂部。
Epop() 移除堆棧頂部的對象,並作為此函數的值返回該對象。
Epeek() 查看堆棧頂部的對象,但不從堆棧中移除它。
booleanempty() 測試堆棧是否為空。
intsearch(Objecto) 返回對象在堆棧中的位置,以1為基數。
6. java的棧stack 怎麼查看所有的元素
java.util.Stack 類的構造方法創建對象
這個類裡面有這個方法
public peek() 查看棧頂對象而不移除它。。
點贊我 喲
7. java中stack的應用
stack是一個先進後的結構,
jdk1.5開始可以用泛型來定義stack吧
表達式求值算是一個基本的應用了
8. java 中Stack的使用
使用時,要先創建一個實例,如Stack st=new Stack();st.empty()方法是測試堆棧是否為空st.peek()查看棧頂對象而不專移屬除它st.pop()移除棧頂對象並作為此函數的值返回該對象st.push(E item) 把項壓入棧頂st.search(Object o) 返回對象在棧中的位置,以 1 為基數
9. 關於JAVA中的Stack.pop()
1、
Object是java裡面所有來類的超類,而自Object中有一個方法叫toString(),所以java中所有類都會有這個方法。
x=x+s.pop();
這里s.pop()是一個Object類型的對象,當其與String相「+」時,系統會自動調用Object的toString()方法將其轉成String表示。
例如,假如你重載toString方法:
class MyObject{
public String toString(){//重載方法
return "This is class MyObject.";
}
}
那麼
MyObject obj = new MyObject();
System.out.println(obj);
System.out.println(obj.toString());這兩句實質上是一樣的。
2、另外,根據jdk1.6泛型的標准,你所使用的Stack類型是有問題的,應該為:
Stack<String> stack = new Stack<String>();
這樣,你push入去的和pop出來的都是String類型而不會是其他類型了。
^_^