作者の文章がとても良いので保存しておきたいと思います。
この例の理解:
//型パラメータは基本型を使用できません。T と U は実際には同じ型です。
//新しいデータが配置されるたびに、元のトップが 1 レベル下にプッシュされ、ポインタを介してリンクが確立されます。
//end センチネルは、true を返す end() と一致するデフォルトのコンストラクターによって作成されたノードです。
次のようにコードをコピーします。
//: ジェネリックス/LinkedStack.java
// 内部リンク構造で実装されたスタック。
パッケージジェネリックス。
パブリック クラス LinkedStack<T> {
プライベート静的クラス Node<U> {
U項目;
次のノード<U>;
Node() {アイテム = null; 次の = null;
Node(U item, Node<U> next) {
this.item = アイテム;
this.next = 次;
}
boolean end() { return item == null && next == null;
}
private Node<T> top = new Node<T>() // センチネルを終了します。
public void Push(T item) {
トップ = 新しい Node<T>(項目, トップ);
}
パブリック T ポップ() {
T 結果 = トップ.アイテム;
if(!top.end())
トップ = トップ.ネクスト;
結果を返します。
}
public static void main(String[] args) {
LinkedStack<String> lss = new LinkedStack<String>();
for(String s : "スタン時のフェイザー!".split(" "))
lss.push;
文字列 ss;
while((ss = lss.pop()) != null)
System.out.println(ss);
//----- LinkedList に整数を入れる場合
LinkedStack<Integer> lii = new LinkedStack<Integer>();
for(整数 i = 0; i < 10; i++){
lii.push(i);
}
整数の終わり。
while((end = lii.pop()) != null)
System.out.println(end);
//----- 整数テスト終了!
}
}
/* 出力:
気絶!
の上
フェイザー
*/