使用泛型實現棧結構

sanqima發表於2014-06-05

   泛型類就是含有一個或者多個型別引數的類。定義泛型類很簡單,只需要在類的名稱後面加上“<”和“>”,並在其中指明型別引數,比如本例中的T。

也可以在其中指明多個引數,如K、V。多個引數之間使用逗號隔開。定義完類後,就可以在類中的域和方法中使用泛型引數。

注意: 泛型型別的引數只能使用類型別,而不能使用基本型別

設計過程:

1)編寫泛型類Stack,在該類中定義了3個方法,分別用來入棧的push()方法、用來出棧的pop()方法和用來判斷棧是否為空的empty()方法。在底層上,本類使用LinkedList作為容器,它是Java集合類的一員,可以用來簡化開發。程式碼如下:

 

public class Stack<T> {
    
    private LinkedList<T> container = new LinkedList<T>();
    
    public void push(T t) {
        container.addFirst(t);
    }
    
    public T pop() {
        return container.removeFirst();
    }
    
    public boolean empty() {
        return container.isEmpty();
    }
}


2)編寫測試代類StackTest,在該類的main()方法中向棧中增加3個字串,又從棧中刪去3個字串並進行輸出。程式碼如下:

public class StackTest {
    public static void main(String[] args) {
        Stack<String> stack = new Stack<String>();
        System.out.println("向棧中增加字串:");
        System.out.println("視訊學Java");
        System.out.println("細說Java");
        System.out.println("Java從入門到精通(第2版)");
        stack.push("視訊學Java");  //向棧中增加字串
        stack.push("細說Java");   //向棧中增加字串
        stack.push("Java從入門到精通(第2版)"); //向棧中增加字串
        System.out.println("從棧中取出字串:");
        while (!stack.empty()) {
            System.out.println((String) stack.pop());//刪除棧中全部元素並進行輸出
        }
    }
}

結果如下:


相關文章