A Java Stack osztály kiterjeszti a Vector osztályt. Lehetővé teszi új elemek létrehozását, egy elem megtekintését a veremben, egy elem frissítését a veremben, valamint az összes elem törlését a veremből. A folyamatadatokat FILO (first-in-last-out) sorrendben halmozza fel. Ez azt jelenti, hogy csak a verem tetejéről adhat hozzá vagy távolíthat el elemeket.

A verem adatszerkezetének öt elsődleges módszere van. A Java Stack osztály azonban több mint 40 másik metódushoz is hozzáfér, amelyeket a Vector osztálytól örököl.

Verem létrehozása Java nyelven

A Stack osztály egyetlen konstruktora van amely lehetővé teszi egy üres verem létrehozását. Minden veremhez tartozik egy type argumentum, amely meghatározza a tárolni kívánt adatok típusát.

import java.util. Kazal;

nyilvánososztály{
nyilvánosstatikusüresfő-(String[] args){
// verem létrehozása
Kazal Ügyfelek = új Kazal();
}
}

A fenti kód egy verem adatszerkezetet hoz létre, melynek neve Ügyfelek amely String értékeket tárol.

Verem feltöltése

A Stack osztály öt elsődleges metódusának egyike a

instagram viewer
nyom() módszer. Egyetlen elemet vesz igénybe, amelynek adattípusa megegyezik a verem adattípusával, és ezt az elemet a verem tetejére tolja.

// verem feltöltése
Customers.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Customers.push("Paul Smith");
Customers.push("Erick Rowe");
Customers.push("Ella Jones");
Customers.push("Jessica Brown");

A fenti kód hét elemmel tölti fel a Vevők Stackjét. Minden új elemet a verem tetejére tol. Tehát a Customers Stack tetején lévő elem Jessica Brown. És ezt megerősítheti a Stack segítségével kandikál() módszer. Az kandikál() A módszer nem vesz fel érveket. Visszaküldi a verem tetején lévő objektumot anélkül, hogy eltávolítaná.

// objektum megtekintése a verem tetején
System.out.println (Customers.peek());

A fenti kód a következő kimenetet adja vissza a konzolnak:

Jessica Brown

Tekintse meg az elemeket egy halomban

A verem-adatstruktúra meglehetősen korlátozza az adatokkal való interakciót. A Stack-et elsősorban a legfelső elemén keresztül érdemes használni. A Vector osztályból örökölt metódusokat is használhat azonban tetszőleges elemek eléréséhez. Ilyen módszerek közé tartozik az elementAt és a removeElementAt.

A legegyszerűbb módja annak, hogy áttekintést kapjon a verem tartalmáról, ha egyszerűen kinyomtatja. Adj át egy Stack objektumot System.out.println és a Stack toString() metódusa szép összefoglalót készít:

// egy verem összes elemének megtekintése
System.out.println (Ügyfelek);

A fenti kód a következő kimenetet nyomtatja ki a konzolra:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]

Elempozíció keresése egy halomban

Ha ismer egy elemet a veremben, azonosíthatja annak indexpozícióját vagy a verem tetejéhez viszonyított pozícióját. Az indexe() metódus vesz egy elemet a veremben, és visszaadja annak indexpozícióját. Ügyeljen arra, hogy a verem nulláról kezdi indexelni az elemeket.

// cikkindexpozíció keresése
System.out.println (Customers.indexOf("Jane Doe"));

A fenti kód a következő kimenetet nyomtatja ki a konzolra:

0

Az keresés() metódus a Stack osztály egyik elsődleges metódusa. Egy elempozíciót ad vissza a verem tetejéhez képest, ahol a verem tetején lévő elem első számú pozíciója van.

System.out.println (Customers.search("Jane Doe"));

A fenti kód a következő kimenetet nyomtatja ki a konzolra:

7

Ha ellátja a keresés() vagy a indexe() metódusokat olyan elemmel, amely nincs a veremben, akkor negatívat adnak vissza.

System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));

A fenti kód a következő kimenetet nyomtatja ki a konzolra:

-1
-1

Elemek frissítése egy halomban

Csak a verem tetején lévő elemet lehet manipulálni. Tehát, ha egy olyan elemet szeretne frissíteni, amely nem található a verem tetején, akkor az összes elemet fölé kell helyeznie. Az pop() módszer a Stack egyik elsődleges módszere. Az pop() A módszer nem vesz fel érveket. Eltávolítja a köteg tetején lévő elemet, és visszaküldi.

// objektum frissítése
Customers.pop();
Customers.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Ügyfelek);

A fenti kód a következő kimenetet nyomtatja ki a konzolra:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]

Amint a kimenetből látható, a kód Ella vezetéknevét Jamesre frissíti. Ez egy olyan folyamatot foglal magában, amely az elemeket kiugrik a veremből, amíg meg nem érkezik a célobjektum. Ezután felbukkan a célobjektum; frissíti; és a céltárgy tetején lévő elemekkel együtt visszatolja a verembe. Minden alkalommal, amikor frissíteni szeretne egy elemet a veremben, olyan programot kell használnia, amely a fentihez hasonló műveleteket hajt végre.

Elem törlése halomból

Egyetlen elem törléséhez a verem adatstruktúrából ismét használhatja a pop() metódust. Ha a törölni kívánt elem nincs felül, akkor az elemeket felülre helyezheti, amíg el nem éri a kívánt elemet.

Egy halom összes elemének törlése

A verem összes elemének törléséhez használhatja a Java while ciklus a pop() metódussal az elemek egyenkénti törléséhez. Hatékonyabb megközelítés azonban a egyértelmű() módszer. Az egyértelmű() metódus az egyik, amit a Stack osztály örököl a Vector osztálytól. Nem kér argumentumokat, nem ad vissza semmit, hanem egyszerűen eltávolítja az összes elemet a verem adatstruktúrán belül.

// egy verem összes elemének törlése
Ügyfelek.clear();
System.out.println (Customers.empty());

A fenti kód törli az összes elemet a Customers Stackben. Ezután a üres() módszerrel ellenőrizheti, hogy a verem üres-e. Az üres() a Java Stack Class másik elsődleges módszere. Nem használ argumentumot, és logikai értéket ad vissza. Ez a metódus igazat ad vissza, ha a verem üres, egyébként hamis értéket ad vissza.

A fenti kód a következő kimenetet nyomtatja ki a konzolra:

igaz

Gyakorlati alkalmazások a verem adatszerkezethez

A verem adatstruktúra nagyon korlátozó. Nem biztosít akkora rugalmasságot az adatfeldolgozásban, mint más adatstruktúrák. Ez felveti a kérdést: mikor érdemes használni a Stack adatstruktúrát?

A Stack adatstruktúra ideálisan illeszkedik azokhoz az alkalmazásokhoz, amelyek fordított sorrendben igényelnek adatfeldolgozást. Ezek tartalmazzák:

  • Egy alkalmazás, amely ellenőrzi, hogy egy szó palindrom-e.
  • Egy alkalmazás, amely a decimális számokat bináris számokká alakítja.
  • Alkalmazások, amelyek lehetővé teszik a felhasználók számára a visszavonást.
  • Olyan játékok, amelyek lehetővé teszik a felhasználó számára, hogy visszatérjen az előző lépésekhez, például egy sakkjátszma.