首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 進階堆疊實現:泛型支援任意型別、完善異常處理與契約介面

     編輯:Java 綜合教學

設計改進

  • 使用泛型 <T> 支援任意物件型別
  • 定義介面契約 SimpleStack<T> 規範行為
  • 建構子支援自訂初始容量,並驗證合法性
  • pop() 將出棧位置設為 null,協助 GC 回收
  • peek() 空棧時返回 null 而非拋異常 (可依需求調整)

介面定義

public interface SimpleStack {
    boolean empty();
    void push(T obj);
    T pop();
    T peek();
}

實現類

public class MyStack implements SimpleStack {
    private int depth = 0;
    public static final int DEFAULT_INITIAL = 10;
    private T[] stack;

    public MyStack() { this(DEFAULT_INITIAL); }

    public MyStack(int capacity) {
        if (capacity <= 0) throw new IllegalArgumentException("容量必須為正數: " + capacity);
        stack = (T[]) new Object[capacity];
    }

    @Override
    public boolean empty() { return depth == 0; }

    @Override
    public void push(T obj) { stack[depth++] = obj; }

    @Override
    public T pop() {
        --depth;
        T tmp = stack[depth];
        stack[depth] = null; // 釋放引用
        return tmp;
    }

    @Override
    public T peek() {
        if (depth == 0) return null;
        return stack[depth - 1];
    }

    public static void main(String[] args) {
        MyStack stack = new MyStack<>();
        stack.push("Frank");
        stack.push("Smith");
        System.out.println(stack.pop()); // Smith
    }
}

測試輸出

Smith
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved