Java編程語言中的棧和隊列都屬于數據結構中的一類,它們都可以通過繼承同一父類來實現基本操作的統一,這個父類就是java.util.AbstractCollection
public abstract class AbstractCollectionimplements Collection { //抽象類中已經實現的接口方法:add(), remove(), isEmpty()等。 //size(), iterator(), clear()方法需要同樣被子類實現。 public abstract Iterator iterator(); public abstract int size(); public boolean add(E e){ throw new UnsupportedOperationException(); } public boolean remove(Object o){ Iterator it = iterator(); if (o == null) { while (it.hasNext()) { if (it.next() == null) { it.remove(); return true; } } } else { while (it.hasNext()) { if (o.equals(it.next())) { it.remove(); return true; } } } return false; } public boolean addAll(Collection extends E>c) { boolean modified = false; for (E e : c) if (add(e)) modified = true; return modified; } //... ... }
盡管棧和隊列是兩種不同的數據結構,但在實現上卻有許多相同之處。它們都涉及到元素的添加、刪除和訪問。具體來說,棧是一種后進先出(LIFO)的存儲結構,可以通過繼承抽象類AbstractCollection來實現它的基本操作;而隊列是一種先進先出(FIFO)的存儲結構,同樣也可以繼承AbstractCollection類進行實現。