ホームページ  >  記事  >  Java  >  Javaのスタッククラス

Javaのスタッククラス

WBOY
WBOYオリジナル
2024-08-30 16:01:28650ブラウズ

Stack クラスは java.util パッケージの一部であり、スタック データ構造を実装します。 JavaのスタッククラスはLIFO(Last in First Out)の原理で動作します。 Stack クラスは、基本的なプッシュおよびポップ操作と、空、ピーク、検索などの追加機能を提供します。スタック クラスは、さまざまな操作を実行するためのさまざまなメソッドを提供します。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文:

Java でのスタック クラスの使用方法の基本的な構文は次のとおりです。

import java.util.*;
// instantiate stack through default constructor
Public class Myclass{
// instantiate stack class
Stack stack = new Stack();
stack.push(1);  // calling push method to insert an element
}

スタック クラスは Java でどのように機能しますか?

Stack クラスは java.util パッケージの一部であり、Vector クラスを拡張して List インターフェースを実装します。 Java では Vector クラスのサイズを変更できます。つまり、新しい要素を追加するとサイズが大きくなり、要素を削除するとサイズが小さくなります。 stack クラスは Vector を拡張するため、本質的にサイズ変更も可能です。スタック クラスを使用するには、コンストラクターを通じてスタック クラスのインスタンスを作成する必要があります。スタック クラスはサイズ変更可能なため、スタック クラスで使用できるデフォルトのコンストラクターは 1 つだけです。

インスタンスを取得した後、要件に応じて次のメソッドを呼び出すことができます:

  • push(): このメソッドは、スタックの最上位に要素を挿入し、挿入された要素を返します。
  • pop(): このメソッドは、最後に挿入された要素をスタックから削除し、削除された要素を返します。
  • peek(): このメソッドは、スタックから上位の要素を削除せずにスタックから返します。
  • search (Object element): このメソッドは、スタック内の指定された要素を検索し、要素が見つかった場合はスタックの先頭からそのインデックスを返します。それ以外の場合は、-1 を返します。
  • empty(): このメソッドは、指定されたスタックが空かどうかを確認します。スタックが空の場合は true を返します。それ以外の場合は false を返します。
  • size(): このメソッドは、スタック内で使用可能な要素の数を返します。

Java のスタック クラスの例

例の一部を以下に示します。

例 #1

次に、上記のメソッドがスタック内でどのように使用されるかを示す Java コード例を見ていきます。

コード:

//import stack class
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
// Creating Instance of  Stack
Stack<String> numbers = new Stack<>(); // stack of type string only string type elements can be inserted
// Pushing new elements to the Stack
numbers.push("One");
numbers.push("Two");
numbers.push("Three");
numbers.push("Four");
int size= numbers.size(); // finding size of stack
System.out.println("Stack contains => " + numbers);
System.out.println("Size of Stack is  => " + size);
System.out.println();
// Popping Elements from the Stack
String numbersAtTop = numbers.pop();  // Throws EmptyStackException if the stack is empty
System.out.println("Element Removed  => " + numbersAtTop);
System.out.println("Current State of Stack => " + numbers);
size= numbers.size();
System.out.println("Size of Stack is  => " + size);
System.out.println();
// Get the element at the top of the stack without removing it
numbersAtTop = numbers.peek();
System.out.println("Top Most elemement of stack  => " + numbersAtTop);
System.out.println("Current State of Stack => " + numbers);
// searching for an element in stack
int index = numbers.search("Two");
System.out.println("Element found at Index " + index);
// check if the stack is empty
boolean isempty = numbers.empty();
System.out.println("Is Stack Empty =>  " + isempty);
}}

上記のプログラムは、プッシュ、ポップ、ピーク、検索、空などのさまざまな操作をスタック クラスでどのように実行できるかを示しています。

例 #2

次に、スタック クラスの要素を反復処理する方法を見ていきます。

コード:

//import stack class
import java.util.Stack;
//import stream to iterate over stack
import java.util.stream.Stream;
public class StackDemo {
public static void main(String[] args) {
// Creating Instance of  Stack
Stack<String> numbers = new Stack<>(); // stack of type string only string type elements can be inserted
// Pushing new elements to the Stack
numbers.push("First");
numbers.push("Second");
numbers.push("Third");
numbers.push("Fourth");
System.out.println("Stack contains => " + numbers);
System.out.println();
// getting stream object to iterate over elements of stack
Stream stream = numbers.stream();
System.out.println("Iterating stack using stream >> ");
stream.forEach((item) -> {
System.out.println(item);  // print item
});
}
}

上記のプログラムは、スタックの要素を反復処理する方法を示しています。スタック インスタンスで stream() メソッドを呼び出す必要があります。これにより、Stream オブジェクトが返されます。次に、ストリーム クラスの forEach メソッドを使用してスタックを反復処理します。

結論

この記事では、スタック クラスについて見てきました。また、スタック クラスをインスタンス化し、スタック クラスで利用可能なさまざまなメソッドを使用する方法についても説明しました。 Stack クラスを使用して実行できるさまざまな操作を観察してきました。上記の Java コード例は、スタック クラスについて完全に明確に示しています。

以上がJavaのスタッククラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。