Inhaltsverzeichnis
Beispiel
Ausgabe
Fazit
Heim Java javaLernprogramm Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika?

Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika?

Sep 05, 2023 pm 09:25 PM
数组 (array) 栈 (stack) Generika

Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika?

Java implementiert den Stack durch die Nutzung von Arrays und Generika. Dadurch entsteht eine vielseitige und wiederverwendbare Datenstruktur, die nach dem Last-In-First-Out-Prinzip (LIFO) arbeitet. Nach diesem Prinzip werden Elemente von oben hinzugefügt und entfernt. Durch die Verwendung von Arrays als Basis werden eine effiziente Speicherzuweisung und ein effizienter Speicherzugriff gewährleistet. Darüber hinaus ist der Stapel durch die Integration von Generika in der Lage, Elemente unterschiedlicher Art aufzunehmen, wodurch seine Vielseitigkeit erhöht wird.

Die Implementierung umfasst die Definition einer Stack-Klasse, die generische Typparameter enthält. Es umfasst grundlegende Methoden wie push(), pop(), peek() und isEmpty(). Auch die Handhabung von Grenzfällen wie Stapelüberläufen und -unterläufen ist für die Gewährleistung einer reibungslosen Funktionalität von entscheidender Bedeutung. Diese Implementierung ermöglicht es Entwicklern, Stapel zu erstellen, die jede Art von Element in Java aufnehmen können.

Stack in Java

In Java ist der Stack eine wichtige Datenstruktur, die nach dem Last-In-First-Out-Prinzip (LIFO) arbeitet. Es stellt eine Sammlung von Elementen dar, wobei die zuletzt hinzugefügten Elemente zuerst entfernt werden. Die Stack-Klasse in Java bietet eine Vielzahl von Methoden zur effizienten Manipulation von Elementen. Mit der Push-Methode können Sie beispielsweise ein Element oben im Stapel hinzufügen, während Pop das oberste Element entfernt und zurückgibt. Darüber hinaus können Sie mit peek das oberste Element abrufen, ohne es zu entfernen, und isEmpty prüft, ob der Stapel leer ist.

import java.util.Stack;

Stack<Type> stack = new Stack<>();
stack.push(element); // Adds 'element' to the top of the stack
Type topElement = stack.pop(); // Removes and returns the top element
Type peekElement = stack.peek(); // Retrieves the top element without removing it
boolean isEmpty = stack.isEmpty(); // Checks if the stack is empty
Nach dem Login kopieren

Methode

Es gibt verschiedene Möglichkeiten, einen Stack in Java mithilfe von Arrays und Generika zu implementieren. Wir werden uns mit beiden befassen:

  • Verwenden Sie ein Array, um den Stapel zu implementieren

  • Verwenden Sie Generika für die Stack-Implementierung

Verwenden Sie ein Array, um den Stapel zu implementieren

Bei der Implementierung eines Stacks in Java mithilfe eines Arrays wird eine Datenstruktur erstellt, die dem Last-In-First-Out-Prinzip (LIFO) folgt. Bei diesem Ansatz werden Elemente in einem Array gespeichert und die oberste Variable wird verwendet, um den Index zu verfolgen, der das oberste Element im Stapel darstellt.

Stack-Klassen enthalten normalerweise mehrere Methoden. Dazu gehören push(), das ein Element oben im Stapel hinzufügt, pop(), das das oberste Element entfernt und abruft, pe-ek(), das es Ihnen ermöglicht, das oberste Element anzuzeigen, ohne es zu entfernen, und isEmpty ( ), der prüft, ob der Stapel leer ist.

Algorithmus

  • Erstellen Sie ein Array, um die Elemente des Stapels zu speichern.

  • Initialisieren Sie die Variable mit dem Namen „top“ auf -1, um anzuzeigen, dass der Stapel leer ist.

  • Elemente auf den Stapel schieben:

  • Überprüfen Sie, ob der Stapel voll ist (top == array.length - 1).

  • Wenn der Stapel nicht voll ist, erhöhen Sie die Variable „top“ um 1 und weisen Sie das Element array[top] zu.

  • Ein Element vom Stapel entfernen:

    • Überprüfen Sie, ob der Stapel leer ist (oben == -1).

    • Wenn der Stapel nicht leer ist, rufen Sie das Element aus array[top] ab und dekrementieren Sie die Variable „top“ um 1.

Beispiel

public class Stack {
   private int[] array;
   private int top;
   
   public Stack(int capacity) {
      array = new int[capacity];
      top = -1;
   }
   
   public void push(int element) {
      if (top == array.length - 1) {
         System.out.println("Stack is full. Cannot push element.");
      } else {
         top++;
         array[top] = element;
         System.out.println("Pushed element: " + element);
      }
   }
   
   public int pop() {
      if (top == -1) {
         System.out.println("Stack is empty. Cannot pop element.");
         return -1;
      } else {
         int poppedElement = array[top];
         top--;
         System.out.println("Popped element: " + poppedElement);
         return poppedElement;
      }
   }
   
   public int peek() {
      if (top == -1) {
         System.out.println("Stack is empty. No element to peek.");
         return -1;
      } else {
         System.out.println("Peeked element: " + array[top]);
         return array[top];
      }
   }
   
   public boolean isEmpty() {
      return (top == -1);
   }
   
   public static void main(String[] args) {
      Stack stack = new Stack(5);
      
      stack.push(10);
      stack.push(20);
      stack.push(30);
      
      stack.pop();
      
      stack.push(40);
      stack.push(50);
      
      stack.pop();
      stack.pop();
      stack.pop();
      stack.pop();
   }
}
Nach dem Login kopieren

Ausgabe

Pushed element: 10
Pushed element: 20
Pushed element: 30
Popped element: 30
Pushed element: 40
Pushed element: 50
Popped element: 50
Popped element: 40
Popped element: 20
Popped element: 10
Nach dem Login kopieren

Verwenden Sie Generika für die Stack-Implementierung

Stack-Implementierung mit Generika kann als gemeinsame Datenstruktur verwendet werden. Es ermöglicht das Speichern und Abrufen von Elementen nach dem Last-In-First-Out-Prinzip (LIFO) und bietet so Flexibilität bei der Verarbeitung einer Vielzahl von Datentypen. Durch die Nutzung von Generika wird dieser anpassungsfähige Stapel zu einem effizienten Behälter, der Elemente jeder Art aufnehmen kann, was ihn äußerst vielseitig und wiederverwendbar macht.

Algorithmus

  • Erstellen Sie eine generische Klasse namens Stack, um Elemente im Stapel zu speichern.

  • Innerhalb der Stack-Klasse gibt es ein privates Array oder eine verknüpfte Liste zum Speichern dieser Elemente.

  • Der Stack wird mit einem Konstruktor initialisiert, der den nötigen Speicher zuweist.

  • Um ein Element oben im Stapel hinzuzufügen, müssen Sie die Methode push(element: T) implementieren, die die Stapelgröße erhöht und das Element speichert.

  • In ähnlicher Weise wird die Methode pop():T implementiert, um das oberste Element vom Stapel zu entfernen und zurückzugeben und gleichzeitig seine Größe zu reduzieren.

  • peek(): Die T-Methode ermöglicht das Abrufen des obersten Elements, ohne es zu entfernen.

  • Außerdem prüft die boolesche Methode isEmpty():, ob der Stapel leer ist, während size(): number zurückgibt, wie viele Elemente sich derzeit im Stapel befinden.

Beispiel

import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List;

public class Stack<T> {
   private List<T> stack;

   public Stack() {
      stack = new ArrayList<>();
   }

   public void push(T element) {
      stack.add(element);
   }

   public T pop() {
      if (isEmpty()) {
         throw new EmptyStackException();
      }
      return stack.remove(stack.size() - 1);
   }

   public T peek() {
      if (isEmpty()) {
         throw new EmptyStackException();
      }
      return stack.get(stack.size() - 1);
   }

   public boolean isEmpty() {
      return stack.isEmpty();
   }

   public int size() {
      return stack.size();
   }

   public void clear() {
      stack.clear();
   }

   public static void main(String[] args) {
      Stack<Integer> stack = new Stack<>();

      stack.push(1);
      stack.push(2);
      stack.push(3);

      System.out.println("Stack size: " + stack.size());
      System.out.println("Top element: " + stack.peek());

      while (!stack.isEmpty()) {
         System.out.println("Popped element: " + stack.pop());
      }
   }
}
Nach dem Login kopieren

Ausgabe

Stack size: 3
Top element: 3
Popped element: 3
Popped element: 2
Popped element: 1
Nach dem Login kopieren

Fazit

Zusammenfassend lässt sich sagen, dass die Verwendung von Arrays und Generika zur Implementierung von Stacks in Java die Vorteile der Allgemeingültigkeit und Typsicherheit bietet. Durch die Einbindung von Generika können Entwickler eine generische Klasse namens „Stack“ erstellen, die Elemente jeden Typs enthalten kann, wodurch die Implementierungsflexibilität erhöht wird. Dieser Ansatz stellt sicher, dass sich die Stapeldatenstruktur an verschiedene Szenarien anpassen kann und gleichzeitig strenge Typbeschränkungen einhält.

Die Stack-Klasse verwendet ein Array vom Typ T[] zum Speichern von Elementen und eine Ganzzahlvariable namens „top“, um das oberste Element zu verfolgen. Es bietet grundlegende Methoden wie Push, Pop, Peek, isEmpty usw., um effiziente Stack-Operationen sicherzustellen.

Entwickler können diese Implementierung nutzen, um benutzerdefinierte Stacks für bestimmte Typen zu erstellen und gleichzeitig von den Vorteilen der Typsicherheit zu profitieren. Robuste und effiziente Stapeldatenstrukturen können in Java durch die Nutzung von Arrays und Generika implementiert werden.

Das obige ist der detaillierte Inhalt vonWie implementiert man einen Stack in Java mithilfe von Arrays und Generika?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

In der C-Sprache Array-Post-Inkrement und Front-Inkrement In der C-Sprache Array-Post-Inkrement und Front-Inkrement Aug 30, 2023 pm 04:57 PM

Die Frage verwendet ein C-Programm, um die Konzepte der Post-Inkrementierung und der Vor-Inkrementierung eines Arrays zu erklären. Lösung Inkrementoperator (++) – Es gibt zwei Arten von Inkrementoperatoren, die verwendet werden, um den Wert einer Variablen um 1 zu erhöhen – Vorinkrement und Postinkrement. Beim vorangestellten Inkrementieren wird der Inkrementoperator vor dem Operanden platziert, und der Wert wird zuerst inkrementiert und dann wird die Operation ausgeführt. zB:z=++a;a=a+1z=a Der Inkrementoperator wird nach dem Operanden in der Post-Inkrementierungsoperation platziert, und der Wert erhöht sich, nachdem die Operation abgeschlossen ist. zB:z=a++;z=aa=a+1 Betrachten wir ein Beispiel für den Zugriff auf ein bestimmtes Element an einem Speicherort mithilfe von Pre-Inkrement und Post-Inkrement. Deklarieren Sie ein Array der Größe 5 und führen Sie eine Initialisierung zur Kompilierungszeit durch. Versuchen Sie anschließend, der Variablen „a“ den Vorinkrementwert zuzuweisen. a=++arr[1]

Wie füge ich in Java neue Elemente zu einem Array hinzu? Wie füge ich in Java neue Elemente zu einem Array hinzu? Jan 03, 2024 pm 03:30 PM

Das Hinzufügen neuer Elemente zu einem Array ist ein häufiger Vorgang in Java und kann mit verschiedenen Methoden durchgeführt werden. In diesem Artikel werden mehrere gängige Methoden zum Hinzufügen von Elementen zu einem Array vorgestellt und entsprechende Codebeispiele bereitgestellt. 1. Eine übliche Methode zur Verwendung eines neuen Arrays besteht darin, ein neues Array zu erstellen, die Elemente des ursprünglichen Arrays in das neue Array zu kopieren und am Ende des neuen Arrays neue Elemente hinzuzufügen. Die spezifischen Schritte lauten wie folgt: Erstellen Sie ein neues Array, dessen Größe um 1 größer ist als das ursprüngliche Array. Dies liegt daran, dass ein neues Element hinzugefügt wird. Kopieren Sie die Elemente des ursprünglichen Arrays in das neue Array. Am Ende des neuen Arrays hinzufügen

Ordnen Sie ein Array neu an, sodass „arr' zu „arr' wird, und verwenden Sie nur O(1) zusätzlichen Speicherplatz, der in C++ implementiert ist Ordnen Sie ein Array neu an, sodass „arr' zu „arr' wird, und verwenden Sie nur O(1) zusätzlichen Speicherplatz, der in C++ implementiert ist Aug 28, 2023 am 11:53 AM

Wir erhalten ein Array vom Typ einer positiven Ganzzahl, beispielsweise arr[], beliebiger Größe, sodass der Elementwert im Array größer als 0, aber kleiner als die Größe des Arrays sein sollte. Die Aufgabe besteht darin, ein Array nur durch Ändern von arr[i] in arr[arr[i]] im angegebenen O(1)-Raum neu anzuordnen und das Endergebnis auszugeben. Schauen wir uns verschiedene Eingabe- und Ausgabeszenarien für diese Situation an − Eingabe − intarr[] = {032154} Ausgabe − Array vor der Anordnung: 032154 Ordnen Sie das Array neu an, sodass arr[i] zu arr[arr[i]] wird und O( 1) zusätzlicher Platz: 012345 Erläuterung − Wir erhalten ein ganzzahliges Array der Größe 6, und alle Elemente im Array haben Werte kleiner als 6. Jetzt werden wir neu ordnen

Grundlegende Operationen und Verwendung von Arrays in PHP Grundlegende Operationen und Verwendung von Arrays in PHP Jun 28, 2023 pm 08:02 PM

Grundlegende Operationen und Verwendung von Arrays in PHP 1. Übersicht Array ist ein sehr wichtiger Datentyp in PHP. Es kann zum Speichern mehrerer Werte verwendet werden, und auf diese Werte kann über Indizes oder Schlüssel zugegriffen werden. Arrays verfügen über umfangreiche Operationen und Verwendungsmethoden in PHP. In diesem Artikel werden die grundlegenden Operationen und Verwendungsmethoden von Arrays in PHP ausführlich vorgestellt. 2. Arrays erstellen In PHP können Sie Arrays auf zwei Arten erstellen: zählbare Arrays und assoziative Arrays. Erstellen eines zählbaren Arrays Ein zählbares Array ist ein Array, das der Reihe nach angeordnet und numerisch indiziert ist

Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika? Wie implementiert man einen Stack in Java mithilfe von Arrays und Generika? Sep 05, 2023 pm 09:25 PM

Java implementiert den Stack durch die Verwendung von Arrays und Generika. Dadurch entsteht eine vielseitige und wiederverwendbare Datenstruktur, die nach dem Last-In-First-Out-Prinzip (LIFO) arbeitet. Nach diesem Prinzip werden Elemente von oben hinzugefügt und entfernt. Durch die Verwendung von Arrays als Basis werden eine effiziente Speicherzuweisung und ein effizienter Speicherzugriff gewährleistet. Darüber hinaus ist der Stapel durch die Integration von Generika in der Lage, Elemente unterschiedlicher Art aufzunehmen, wodurch seine Vielseitigkeit erhöht wird. Die Implementierung umfasst die Definition einer Stack-Klasse, die generische Typparameter enthält. Es umfasst grundlegende Methoden wie push(), pop(), peek() und isEmpty(). Auch die Handhabung von Grenzfällen wie Stapelüberläufen und -unterläufen ist für die Gewährleistung einer reibungslosen Funktionalität von entscheidender Bedeutung. Diese Implementierung ermöglicht es Entwicklern, Programme zu erstellen, die diesen Anforderungen gerecht werden

Stapel und Warteschlange in C++ Stapel und Warteschlange in C++ Aug 22, 2023 am 11:00 AM

Einführung in Stapel und Warteschlangen in C++ Stapel und Warteschlangen sind häufig verwendete Datenstrukturen in C++ und werden häufig in Programmen verwendet. In diesem Artikel werden die Konzepte, Verwendungs- und Anwendungsszenarien von Stapeln und Warteschlangen ausführlich vorgestellt. 1. Das Konzept des Stapels Stapel (Stack) ist eine lineare Datenstruktur mit den Merkmalen „First In, Last Out“. Im Stapel befinden sich die in den Stapel verschobenen Daten näher am unteren Ende des Stapels; die später in den Stapel verschobenen Daten befinden sich näher am oberen Ende des Stapels. Die Hauptoperationen des Stapels sind Push und Pop. Den Stapel zu verschieben bedeutet, Daten zum Stapel hinzuzufügen und den Stapel zu öffnen

Arrays in C/C++? Arrays in C/C++? Sep 20, 2023 pm 08:25 PM

Ein Array ist eine sequentielle Sammlung von Elementen desselben Typs. Arrays werden zum Speichern von Datensammlungen verwendet. Häufig ist es jedoch sinnvoller, sich Arrays als Sammlungen von Variablen desselben Typs vorzustellen. Anstatt eine einzelne Variable wie Zahl0, Zahl1, ... und Zahl99 zu deklarieren, können Sie eine Array-Variable (z. B. Zahl) deklarieren und sie mit Zahlen[0], Zahlen[1] und ..., Zahlen[99] darstellen. jede Variable. Auf bestimmte Elemente im Array wird durch Indizierung zugegriffen. Alle Arrays bestehen aus zusammenhängenden Speicherorten. Die niedrigste Adresse entspricht dem ersten Element und die höchste Adresse entspricht dem letzten Element. Ein Array deklarieren Das Deklarieren eines Arrays erfordert die Angabe des Elementtyps und der Anzahl der erforderlichen Elemente. Ein Array sieht wie folgt aus: -ty

Wie können wir einen Stack mithilfe einer Warteschlange in Java implementieren? Wie können wir einen Stack mithilfe einer Warteschlange in Java implementieren? Aug 25, 2023 pm 05:05 PM

Ein Stapel ist eine Unterklasse der Vector-Klasse und stellt einen LIFO-Stapel (Last-In-First-Out) von Objekten dar. Das letzte Element, das oben zum Stapel hinzugefügt wird (In), kann das erste Element sein, das aus dem Stapel entfernt wird (Out). Die Queue-Klasse erweitert die Collection-Schnittstelle und unterstützt Einfüge- und Löschvorgänge mithilfe von First-In-First-Out (FIFO). Wir können Warteschlangen auch verwenden, um Stapel im folgenden Programm zu implementieren. Beispiel importjava.util.*;publicclassStackFromQueueTest{ Queuequeue=newLinkedList();

See all articles