„Java Stack“ klasė išplečia „Vector“ klasę. Tai leidžia kurti naujus elementus, peržiūrėti elementą krūvoje, atnaujinti elementą dėtuvėje ir ištrinti visus elementus iš krūvos. Apdoroja duomenis FILO tvarka. Tai reiškia, kad galite pridėti arba pašalinti elementus tik iš krūvos viršaus.

Duomenų dėklo struktūra turi penkis pagrindinius metodus. Tačiau „Java Stack“ klasė taip pat turi prieigą prie daugiau nei 40 kitų metodų, kuriuos ji paveldi iš „Vector“ klasės.

Stacko kūrimas Java

„Stack“ klasė turi vieną konstruktorių kuri leidžia sukurti tuščią krūvą. Kiekvienas kaminas turi tipo argumentą, kuris diktuoja duomenų, kuriuos jis saugos, tipą.

importuoti java.util. Stack;

viešasklasėPagrindinis{
viešasstatinistuštumapagrindinis(String[] args){
// sukurti krūvą
Stack Klientai = naujas Stack();
}
}

Aukščiau pateiktas kodas sukuria Stack duomenų struktūrą, vadinamą Klientai kuri saugo stygų reikšmes.

Krūvos užpildymas

Vienas iš penkių pagrindinių „Stack“ klasės metodų yra stumti () metodas. Tai paima vieną elementą, kurio duomenų tipas yra toks pat kaip ir dėklo, ir nustumia tą elementą į krūvos viršų.

instagram viewer

// užpildyti krūvą
Klientai.push("Jane Doe");
Customers.push ("Jonas Doe");
Customers.push ("Patrick Williams");
Klientai.push("Paul Smith");
Customers.push ("Erick Rowe");
Klientai.push ("Ella Jones");
Klientai.push("Jessica Brown");

Aukščiau pateiktas kodas užpildo klientų krūvą septyniais elementais. Kiekvieną naują elementą jis nustumia į krūvos viršų. Taigi, elementas klientų krūvos viršuje yra Jessica Brown. Ir tai galite patvirtinti naudodami „Stack“. žvilgtelėti () metodas. The žvilgtelėti () metodas nereikalauja argumentų. Jis grąžina objektą krūvos viršuje jo nepašalindamas.

// peržiūrėti objektą krūvos viršuje
System.out.println (Customers.peek());

Aukščiau pateiktas kodas į konsolę grąžina šią išvestį:

Jessica Brown

Peržiūrėkite elementus krūvoje

Duomenų krūvos struktūra yra gana ribojanti, kaip ji leidžia sąveikauti su jos duomenimis. Daugiausia turėtumėte naudoti „Stack“ per aukščiausią elementą. Tačiau taip pat galite naudoti metodus, paveldėtus iš Vector klasės, norėdami pasiekti savavališkus elementus. Tokie metodai apima elementAt ir removeElementAt.

Paprasčiausias būdas gauti krūvos turinio apžvalgą yra tiesiog jį atspausdinti. Perduokite Stack objektą System.out.println ir Stack's toString() metodas pateiks gražią santrauką:

// peržiūrėti visus kamino elementus
System.out.println (klientai);

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

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

Prekės padėties paieška krūvoje

Jei žinote elementą krūvoje, galite nustatyti jo indekso padėtį arba padėtį, palyginti su krūvos viršumi. The indexOf() metodas paima elementą krūvoje ir grąžina jo indekso poziciją. Atminkite, kad „Stack“ pradeda indeksuoti elementus nuo nulio.

// rasti prekės indekso poziciją
System.out.println (Customers.indexOf("Jane Doe"));

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

0

The Paieška() metodas yra vienas iš pagrindinių „Stack“ klasės metodų. Jis grąžina elemento padėtį, palyginti su krūvos viršumi, kur elemento, esančio krūvos viršuje, pozicija yra pirmoji.

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

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

7

Jei tiekiate Paieška() arba indexOf() metodus su elementu, kurio nėra krūvoje, jie grąžins neigiamą.

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

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

-1
-1

Elementų atnaujinimas krūvoje

Galite valdyti tik elementą, esantį krūvos viršuje. Taigi, jei norite atnaujinti elementą, kurio nėra kamino viršuje, turėsite iškelti visus elementus virš jo. The pop () metodas yra vienas iš pagrindinių „Stack“ metodų. The pop () metodas nereikalauja argumentų. Jis pašalina daiktą, esantį krūvos viršuje, ir grąžina jį.

// atnaujinti objektą
Klientai.pop();
Klientai.pop();
Customers.push ("Ella James");
Klientai.push("Jessica Brown");
System.out.println (klientai);

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

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

Kaip matote iš išvesties, kodas atnaujina Elos pavardę į Jamesą. Tai apima procesą, kuris iškelia elementus iš krūvos, kol pasieksite tikslinį objektą. Tada iššoka tikslinis objektas; jį atnaujina; ir stumia jį kartu su elementais, kurie buvo ant tikslinio elemento, atgal į krūvą. Turėsite naudoti programą, kuri atlieka tokias operacijas kaip aukščiau, kiekvieną kartą, kai norite atnaujinti elementą savo Stack.

Elemento ištrynimas iš krūvos

Norėdami ištrinti vieną elementą iš Stack duomenų struktūros, vėl galite naudoti pop() metodą. Jei elemento, kurį norite ištrinti, nėra viršuje, galite iškelti elementus viršuje, kol pasieksite norimą elementą.

Visų krūvos elementų ištrynimas

Norėdami ištrinti visus elementus iš krūvos, galite naudoti a Java while ciklas naudodami pop() metodą, norėdami ištrinti elementus po vieną. Tačiau efektyvesnis būdas yra naudoti aišku () metodas. The aišku () metodas yra tas, kurį Stack klasė paveldi iš Vector klasės. Tai nereikalauja jokių argumentų, nieko nepateikia, o tiesiog pašalina visus Stack duomenų struktūros elementus.

// ištrinti visus krūvos elementus
Klientai.clear();
System.out.println (Customers.empty());

Aukščiau pateiktas kodas ištrina visus klientų krūvos elementus. Tada jis naudoja tuščia() būdas patikrinti, ar kaminas tuščias. The tuščia() yra dar vienas pagrindinis Java Stack klasės metodas. Tai nereikalauja jokių argumentų ir grąžina Būlio reikšmę. Šis metodas grąžina „true“, jei kaminas tuščias, o kitu atveju „false“.

Aukščiau pateiktas kodas spausdina šią išvestį į konsolę:

tiesa

Praktiniai kamino duomenų struktūros pritaikymai

Stack duomenų struktūra yra labai ribojanti. Ji nesuteikia tokio lankstumo tvarkant duomenis kaip kitos duomenų struktūros. Tai kelia klausimą: kada turėtumėte naudoti Stack duomenų struktūrą?

Stack duomenų struktūra idealiai tinka programoms, kurioms reikia apdoroti duomenis atvirkštine tvarka. Jie apima:

  • Programa, kuri patikrina, ar žodis yra palindromas.
  • Programa, kuri konvertuoja dešimtainius skaičius į dvejetainius skaičius.
  • Programos, kurios leidžia vartotojams anuliuoti.
  • Žaidimai, leidžiantys vartotojui grįžti prie ankstesnių ėjimų, pvz., šachmatų žaidimas.