Javaスタッククラス:初心者のガイド

はじめに

こんにちは、将来的なJava開発者の皆さん!今日は、Javaのスタッククラスの素晴らしい世界に飛び込んでいきます。まだ一度もコードを書いたことがなくても心配しないでください。あなたの友好的なガイドとして、私はこの興奮な旅に付き添います。

Java - Stack Class

本を整理するときを想像してみてください。それぞれを積み重ねます。最後に積んだ本が、必要となったときに最初に取り出すものです。それは、Javaのスタックがどのように動くかというのに正確に一致します!それは「最後に入れたものを最初に出す」(LIFO)データ構造で、プログラミングにおいて非常に便利です。

クラス宣言

基本的なことから始めましょう。Javaでは、スタッククラスはjava.utilパッケージの一部です。それを使用するには、以下のようにインポートする必要があります:

import java.util.Stack;

スタッククラスはベクタークラスを拡張し、リスト、コレクション、イテラブル、クローン可能、シリアライズ可能なインターフェースを実装しています。今はこれらの用語がアレン語のように聞こえても心配しないでください。徐々に理解できるようになります!

クラスコンストラクタ

スタッククラスにはコンストラクタが1つだけあります:

Stack<E> stack = new Stack<E>();

ここで、'E'はスタックに保存したい要素の型のプレースホルダーです。それは整数型、文字列型、または他の任意のオブジェクト型です。例えば:

Stack<Integer> numberStack = new Stack<Integer>();
Stack<String> bookStack = new Stack<String>();

最初の行では、整数を保持するスタックを作成しています。二行目では、文字列を保持するスタックを作成しています。本の積み重ねのアナロジーに最適です!

クラスメソッド

次に、スタッククラスの主要なメソッドを見ていきましょう。簡単に参照するために、以下のように表にまとめます:

メソッド 説明
push(E item) スタックの一番上にアイテムを追加します
pop() スタックの一番上のアイテムを削除し、それを返します
peek() 一番上のアイテムを削除せずに返します
empty() スタックが空かどうかを確認します
search(Object o) オブジェクトを検索し、その位置を返します

これらをいくつかの例で説明していきましょう:

push(E item)

Stack<String> bookStack = new Stack<String>();
bookStack.push("Java for Beginners");
bookStack.push("Data Structures in Java");

ここでは、本をスタックに追加しています。"Data Structures in Java"が今や"Java for Beginners"の上に積まれています。

pop()

String topBook = bookStack.pop();
System.out.println("Removed book: " + topBook);

これは、"Data Structures in Java"をスタックの一番上から削除し、それを返します。

peek()

String nextBook = bookStack.peek();
System.out.println("Next book to read: " + nextBook);

これは、一番上の本を削除せずにそれを返します。この場合は、"Java for Beginners"です。

empty()

if (bookStack.empty()) {
System.out.println("No more books to read!");
} else {
System.out.println("You still have books to read!");
}

これは、スタックが空かどうかを確認します。すべての本を読み終えたかどうかを確認するのに似ています!

search(Object o)

int position = bookStack.search("Java for Beginners");
if (position != -1) {
System.out.println("Book found at position: " + position);
} else {
System.out.println("Book not found in the stack.");
}

これは、スタック内で本を検索します。位置は一番上から数えて、一番上のアイテムは位置1です。

継承されたメソッド

スタッククラスはまた、親クラスのベクターや実装しているインターフェースからメソッドを継承しています。いくつかの便利な継承メソッドには以下の通りです:

  • size(): スタック内の要素数を返します
  • contains(Object o): オブジェクトがスタックにあるかどうかを確認します
  • clear(): スタック内のすべての要素を削除します

楽しい例として、一緒にまとめてみましょう。パンケーキのスタックを追跡することを想像してみてください!

import java.util.Stack;

public class PancakeStack {
public static void main(String[] args) {
Stack<String> pancakes = new Stack<>();

// パンケーキを作成
pancakes.push("Plain");
pancakes.push("Blueberry");
pancakes.push("Chocolate Chip");

System.out.println("Pancake stack: " + pancakes);

// 一番上のパンケーキを食べる
String eatenPancake = pancakes.pop();
System.out.println("Yum! Just ate a " + eatenPancake + " pancake.");

// 次のパンケーキを確認
System.out.println("Next pancake is: " + pancakes.peek());

// もっと多くのパンケーキを追加
pancakes.push("Banana");

// スタックのサイズを確認
System.out.println("Number of pancakes left: " + pancakes.size());

// パンケーキを検索
int position = pancakes.search("Plain");
if (position != -1) {
System.out.println("Plain pancake is " + position + " from the top.");
} else {
System.out.println("No plain pancakes left!");
}
}
}

出力

このコードを実行すると、以下のような出力が得られます:

Pancake stack: [Plain, Blueberry, Chocolate Chip]
Yum! Just ate a Chocolate Chip pancake.
Next pancake is: Blueberry
Number of pancakes left: 3
Plain pancake is 3 from the top.

それで、おしまい!Javaのスタッククラスの基本を学びました。パンケーキや本を積み重ねるように、Javaのスタックも「最後に入れたものを最初に出す」原則に従います。それは、多くのプログラミングシナリオで便利な強力なツールです。

続けて練習し、データをプロのように積み重ね、取り除くことができるようになります!幸せなコーディングをし、スタックが常に美味しいパンケーキ... いや、有用なデータでいっぱいになることを願っています!

Credits: Image by storyset