Razred Java Stack razširja razred Vector. Omogoča ustvarjanje novih elementov, ogled elementa v skladu, posodobitev elementa v skladu in brisanje vseh elementov iz sklada. Skladi obdelujejo podatke v vrstnem redu prvi vstopi zadnji ven (FILO). To pomeni, da lahko dodate ali odstranite samo elemente z vrha sklada.
Podatkovna struktura sklada ima pet primarnih metod. Vendar pa ima razred Java Stack tudi dostop do več kot 40 drugih metod, ki jih podeduje od razreda Vector.
Ustvarjanje sklada v Javi
Razred Stack ima en sam konstruktor ki vam omogoča ustvarjanje praznega sklada. Vsak sklad ima argument vrste, ki narekuje vrsto podatkov, ki jih bo shranil.
uvoz java.util. Stack;
javnostirazredGlavni{
javnostistatičnaprazninaglavni(Argumenti niza[]){
// ustvarite sklad
StackStranke = novo Stack ();
}
}
Zgornja koda ustvari podatkovno strukturo Stack, imenovano Stranke ki shranjuje vrednosti nizov.
Polnjenje sklada
Ena od petih primarnih metod razreda Stack je potisni() metoda. Vzame en element, ki ima isto vrsto podatkov kot sklad, in ga potisne na vrh sklada.
// zapolni sklad
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");
Zgornja koda zapolni kupčev kupec s sedmimi elementi. Vsak nov element potisne na vrh sklada. Torej, element na vrhu kupcev je Jessica Brown. In to lahko potrdite z uporabo sklada pokukati() metoda. The pokukati() metoda ne sprejema argumentov. Vrne predmet na vrhu sklada, ne da bi ga odstranil.
// ogled predmeta na vrhu sklada
System.out.println (Customers.peek());
Zgornja koda vrne naslednji izhod v konzolo:
Jessica Brown
Oglejte si elemente v nizu
Struktura podatkov sklada je precej restriktivna glede tega, kako vam omogoča interakcijo z njenimi podatki. Sklad morate uporabljati predvsem prek njegovega najvišjega predmeta. Vendar pa lahko za dostop do poljubnih elementov uporabite tudi metode, podedovane iz razreda Vector. Takšni metodi vključujeta elementAt in removeElementAt.
Najlažji način za pregled nad vsebino sklada je, da ga natisnete. Predajte objekt Stack System.out.println Stackova metoda toString() pa bo ustvarila lep povzetek:
// ogled vseh elementov sklada
System.out.println (Stranke);
Zgornja koda natisne naslednji izhod v konzolo:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Iskanje položaja predmeta v nizu
Če poznate element v skladu, lahko prepoznate njegov indeksni položaj ali njegov položaj glede na vrh sklada. The indeks() metoda vzame element v skladu in vrne njegov indeksni položaj. Upoštevajte, da sklad začne indeksirati svoje elemente pri nič.
// najdi položaj indeksa artikla
System.out.println (Customers.indexOf("Jane Doe"));
Zgornja koda natisne naslednji izhod v konzolo:
0
The Iskanje() je ena od primarnih metod razreda Stack. Vrne položaj elementa glede na vrh sklada, kjer ima element na vrhu sklada položaj številka ena.
System.out.println (Customers.search("Jane Doe"));
Zgornja koda natisne naslednji izhod v konzolo:
7
Če dobavljate Iskanje() ali indeks() metode z elementom, ki ni v skladu, bodo vrnile negativno.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Zgornja koda natisne naslednji izhod v konzolo:
-1
-1
Posodabljanje elementov v nizu
Manipulirate lahko samo z elementom na vrhu sklada. Torej, če želite posodobiti element, ki ni na vrhu sklada, boste morali odstraniti vse elemente nad njim. The pop() metoda je ena od primarnih metod sklada. The pop() metoda ne sprejema argumentov. Odstrani element na vrhu sklada in ga vrne.
// posodobi objekt
Stranke.pop();
Stranke.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Stranke);
Zgornja koda natisne naslednji izhod v konzolo:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Kot lahko vidite iz izhoda, koda posodobi Ellin priimek v James. Vključuje postopek, ki izloči elemente iz sklada, dokler ne pridete do ciljnega predmeta. Nato izstreli ciljni predmet; ga posodablja; in ga skupaj z elementi, ki so bili na vrhu ciljnega predmeta, potisne nazaj v sklad. Uporabiti boste morali program, ki izvaja operacije, kot je ta zgoraj, vsakič, ko želite posodobiti postavko v svojem skladu.
Brisanje predmeta iz sklada
Če želite izbrisati posamezen element iz strukture podatkov Stack, lahko ponovno uporabite metodo pop(). Če elementa, ki ga želite izbrisati, ni na vrhu, lahko izstopate elemente na vrhu, dokler ne dosežete želenega.
Brisanje vseh elementov v nizu
Če želite izbrisati vse elemente iz sklada, lahko uporabite a Java while zanka z metodo pop() za brisanje elementov enega za drugim. Učinkovitejši pristop pa je uporaba počisti() metoda. The počisti() je metoda, ki jo razred Stack podeduje od razreda Vector. Ne sprejema nobenih argumentov, ne vrne ničesar, ampak preprosto odstrani vse elemente v strukturi podatkov Stack.
// izbriši vse elemente v kupu
Customers.clear();
System.out.println (Customers.empty());
Zgornja koda izbriše vse elemente v naboru strank. Nato uporabi prazno() način za preverjanje, ali je sklad prazen. The prazno() je še ena primarna metoda Java Stack Class. Ne sprejema argumentov in vrne logično vrednost. Ta metoda vrne true, če je sklad prazen, in false v nasprotnem primeru.
Zgornja koda natisne naslednji izhod v konzolo:
prav
Praktične aplikacije za strukturo podatkov sklada
Struktura podatkov Stack je zelo restriktivna. Ne zagotavlja toliko prilagodljivosti pri obdelavi podatkov kot druge podatkovne strukture. To postavlja vprašanje: kdaj bi morali uporabiti podatkovno strukturo Stack?
Struktura podatkov Stack je idealna za aplikacije, ki zahtevajo obdelavo podatkov v obratnem vrstnem redu. Tej vključujejo:
- Aplikacija, ki preveri, ali je beseda palindrom.
- Aplikacija, ki pretvarja decimalna števila v binarna števila.
- Aplikacije, ki uporabnikom omogočajo razveljavitev.
- Igre, ki uporabniku omogočajo vrnitev na prejšnje poteze, kot je šahovska partija.