私はデータ構造の概念に不慣れで、自分で使用するためにスタックを作成しました。
public class ArrayBasedStackImpl<T> {
@SuppressWarnings("unchecked")
private T[] DataStack= (T[]) new Object[10];
private int stack_pointer=-1;
public void push(T t) throws Exception
{
if(stack_pointer>9)
{
throw new Exception("Stack is full");
}
DataStack[++stack_pointer]=t;
}
public T pop() throws Exception
{
if(stack_pointer==-1)
{
throw new Exception("Stack Empty");
}
else
{
return DataStack[stack_pointer--];
}
}
public T peek()
{
return DataStack[stack_pointer];
}}
最初にバックエンド ストレージとして配列を使用しました。実際に本格的に実装する前に、いくつか質問があります。
throw new Exception を使用することをお勧めしますか、それともスタックのメモリが制限されている場合を考慮して、独自の例外クラスを作成する必要があります。
配列は実際にはスタックベースの実装に適していますか?私の使用シナリオでは、かなりのサイズの 10 個のオブジェクトを配列にプッシュするため、スタックのアイテムをポップしたらメモリを解放できるようにしたいと考えています。配列からのアイテム、私はよくグーグルしましたが、良いものを見つけることができませんでした.メモリからクリアしたいときは、この場所でリンクされたリストの方が良いでしょうか.
ここでジェネリックを使用していますが、ジェネリックで配列を使用するのは悪い習慣ですか?