Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaスタッククラス

Javaスタックは、後入れ先出しのデータ構造です。スタックから削除された最初のアイテムは、スタックに最後に追加されたアイテムです。スタックデータ構造は、スタックの最後に新しいアイテムを追加します。 JavaスタックはVectorクラスを拡張します。

プログラミングでは、スタックはデータを格納するために使用される後入れ先出しのデータ構造です。スタックはさまざまな場合に役立ちます。たとえば、リストの対称性をテストしたり、リストの順序を逆にしたりする場合は、スタックを使用できます。

Javaコレクションフレームワークには、 stackというクラスが含まれています。 これは、Javaでスタックを構築するために使用されます。このチュートリアルでは、Javaでのスタックの基本、スタックの作成方法、およびスタッククラスが提供する主なメソッドについて説明します。スタッククラスがどのように機能するかを強化するために、全体を通して例を参照します。

Javaスタック

Javaスタックは、後入れ先出し(LIFO)構造で要素を格納します。これは、スタックの一番上に追加された要素が、スタックから最初に削除された要素になることを意味します。

プログラミングにおけるスタックの1つの例は、Webブラウザのページ制御機能です。 Webページにアクセスすると、Webブラウザがそのページをアクセスしたページのレコードに追加します。このレコードはスタックです。

ブラウジングセッション中に新しいWebページにアクセスするたびに、ブラウザはブラウジングスタックに新しいエントリを追加します。最後にアクセスしたページに戻りたい場合( last-in )、ブラウザは最初にスタックから最新のエントリを削除します( first-out )。スタックの例を示す表は次のとおりです。

サイト名
google.com
nytimes.com
careerkarma.com

これがブラウジング履歴スタックです。現在、google.comのメインページにいます。 google.comページの前は、 New York Timesにいました。 メインページ。その前は、キャリアカルマのメインページにいました。

google.com スタックの一番上にあります。 google.comサイトは、ブラウザがスタックから削除する最初のアイテムになります。これは、戻る矢印ボタンを押して最後にアクセスしたページに戻るときに発生します。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

動作中のスタックの別の例は、本の山です。 (スタックを考えてみてください たくさんの本を読みたい場合は、一番上の本から下に移動します。スタックに最後に追加した本が最初に表示されます。つまり、LIFOです。

スタックを操作している場合、リストの最後のアイテムはスタックの一番上にあると見なされます。 。上記のウェブサイトの例を使用すると、google.comが最新のサイトであるため、スタックの一番上にあります。

Javaスタックを作成する

Javaでスタックを作成する前に、java.util.Stackパッケージをインポートする必要があります。このパッケージには、このチュートリアルで使用するスタックデータ構造が格納されています。

スタックデータ構造をインポートする方法は次のとおりです。

import java.util.Stack;

スタックパッケージをインポートしたので、Javaスタックを作成できます。 Javaでスタックを作成するために使用した構文は次のとおりです。

Stack<DataType> stack_name = new Stack<>();

Javaスタック構文の主なコンポーネントは次のとおりです。

  • スタック スタックを宣言することをプログラムに通知します。
  • データ型 スタックが保存するデータのタイプです。
  • stack_name スタックの名前です。
  • 新しいスタック<>(); 新しいJavaスタックを初期化します。

booksというスタックを作成したい場合 文字列を格納する場合は、次のコードを使用できます:

Stack<String> books = new Stack<>();

新しいスタックを作成しました。このスタックは、後入れ先出しの順序でデータを格納します。

Dequeクラスに関する注意

一部のプログラマーは、Javaのスタックではなくdequeクラスを使用することを好むことに注意してください。

Dequeは両端キューです。スタックに対する両端キューの利点は、両端キューの両端からアイテムを追加および削除できることです。スタックではこれを行うことはできません。

スタック固有のメソッド(以下で説明)を使用する場合は、コードでスタッククラスを使用することを確約する必要があります。これにより、プログラムのスケーリングがより困難になる可能性があります。とはいえ、スタックにはまだJavaでさまざまな用途があります。

Javaスタックメソッド

Javaスタッククラスには、スタック内に格納されているデータを操作するために使用できるいくつかのメソッドが含まれています。これらの方法は、次の2つのカテゴリに分類できます。

  1. ベクタークラスから継承されたスタックメソッド。 スタックが提供する最初のメソッドは、ベクタークラスから継承されたものです。これらのメソッドについて詳しく知りたい場合は、「Javaベクトルクラス」を調べてください。
  1. スタックに固有のスタックメソッド。 Stackは、クラスに固有の5つの追加メソッドも提供します。以下でそれらについて説明します。それらは:
  • push()
  • pop()
  • peek()
  • empty()
  • search()

push()およびpop()操作は、間違いなく最も一般的に使用されます。スタックにアイテムを追加したり、スタックからアイテムを削除したりできます。

Javaスタックにアイテムを追加する:push()

push() メソッドは、Javaスタックにアイテムを追加します。

push() スタックに追加するアイテムという1つのパラメーターを受け入れます。たとえば、図書館のフィクションセクションにすべての本のタイトルを格納するスタックを作成するとします。このコードを使用して、最初の3冊の本のタイトルをスタックに追加できます。

import java.util.Stack;

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

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");
		books.push("The Great Gatsby");

		System.out.println(books);
	}
}

コードは次のようになります:

[Pride and Prejudice, Nineteen Eighty-Four, The Great Gatsby]

まず、Javaスタックモジュールをインポートします。次に、 AddBooksというクラスを宣言します。 —プログラムのコードを保存します。

次の行で、と呼ばれる新しいスタックを初期化します。 -文字列値を格納できます。次に、 push()を使用します スタックに3冊の本のタイトルを追加する方法:高慢と偏見1984年 、および The Great Gatsby 。最後に、の本のタイトルを印刷します。 コンソールにスタックします。

Javaスタックからアイテムを削除する:pop()

pop() メソッドは、スタックの最上位から要素を削除します。このメソッドは、スタックから削除した要素を返します。

The Great Gatsbyのエントリをスタックから削除したいとします。 、これは私たちが最後に入力した本のタイトルでした。このタスクを実行するために、上記のプログラムに次のコードを追加できます。

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

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");
		books.push("The Great Gatsby");

		String removed_book = books.pop();
		System.out.println("Books: " + books);
		System.out.println("Removed book: " + removed_book);
	}
}

コードは次のようになります:

Books: [Pride and Prejudice, Nineteen Eighty-Four]
Removed book: The Great Gatsby

この例では、コードによってスタックの一番上のアイテムが削除されます。

スタックの一番上にあるアイテムはTheGreatGatsbyです。 次に、プログラムは、 Books:が前に付いた改訂された書籍のリストを印刷します。 コンソールに。 削除された本の前にある削除された本のタイトル: コンソールにも表示されます。

スタック内の最初のオブジェクトを取得します:peek()

スタックを操作しているときは、スタックの一番上にあるアイテムを取得することをお勧めします。ここでpeek() メソッドが入ります。peek() パラメータを受け入れません。 覗く スタックの一番上にあり、見つかったアイテムを返します。

The Great Gatsby を削除したので、スタックの一番上にあるアイテムを調べたいとします。 。これを行うには、次のコードを使用できます。

import java.util.Stack;

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

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");

		String top_book = books.peek();

		System.out.println("Book at top of stack: " + top_book);
	}
}

コードは次のようになります:

Book at top of stack: Nineteen Eighty-Four.

スタックには2つのアイテムが含まれています。 1984年 はスタックの一番上にあるため、 peek()を使用すると メソッドでは、プログラムはその本のタイトルを返します。

スタックが空かどうかを確認します:empty()

empty() メソッドは、スタックが空かどうかを判断します。

たとえば、かどうかを確認したいとします。 スタックが空です。スタック内のデータをいじってみました。スタックにこれ以上の本のタイトルが含まれているかどうかはわかりません。

次のコードを使用して、スタックが空かどうかを確認できます。

import java.util.Stack;

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

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");

		String is_empty = books.empty();

		System.out.println("Is the book stack empty? " + is_empty);
	}
}

コードは次のようになります:

Is the book stack empty? false

私たちの スタックには2つの値が含まれているため、空ではありません。したがって、 books.empty() 戻り値:false。

要素の検索:search()

search() メソッドは、スタック内の要素を検索します。

search() 検索するアイテムの名前という1つのパラメーターを受け入れます。スタック内のそのアイテムの位置を返します。

高慢と偏見の位置を知りたいとしましょう 私たちの本のタイトルスタックで。このコードを使用してこれを行うことができます:

import java.util.Stack;

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

		books.push("Pride and Prejudice");
		books.push("Nineteen Eighty-Four");

		String find_book = books.search("Pride and Prejudice");

		System.out.println("Position of 'Pride and Prejudice': " + find_book);
	}
}

コードは次のようになります:

Position of 'Pride and Prejudice': 1. 

スタックの最初のアイテムの位置番号は1 、。 高慢と偏見 はスタックの最初のアイテムであり、プログラムは1を返します。

結論

Javaスタッククラスは、LIFO構造のスタックを作成するために使用されます。このチュートリアルでは、Javaスタックの基本と、スタックを作成する方法について説明しました。また、スタックの内容を取得して操作するために使用される5つの方法についても説明しました。

これで、プロのJava開発者のようにスタックを操作するために必要な知識を身に付けることができます。 Javaプログラミング言語の詳細については、Javaの学習方法ガイドをご覧ください。


  1. Javaのスーパーキーワード

    スーパー変数は直接の親クラスインスタンスを参照します。 スーパー変数は、直接の親クラスメソッドを呼び出すことができます。 super()は、直接の親クラスコンストラクターとして機能し、子クラスコンストラクターの最初の行である必要があります。 オーバーライドされたメソッドのスーパークラスバージョンを呼び出す場合、superキーワードが使用されます。 例 class Animal {    public void move() {       System.out.println("Animals can move");

  2. Javaでの集約

    集約とはHAS-A関係を指します。最初に例を見てみましょう- 例 public class Vehicle{} public class Speed{} public class Van extends Vehicle {    private Speed sp; } これは、クラスVanHAS-ASpeedを示しています。 Speed用に別のクラスを用意することで、speedに属するコード全体をVanクラス内に配置する必要がなくなり、複数のアプリケーションでSpeedクラスを再利用できるようになります。 オブジェクト指向機能では、ユーザーはどのオブジェクトが実際の作業を