logo

Stack Class i Java

Java Innsamlingsramme gir en Stack-klasse som modellerer og implementerer en Diagrammet nedenfor viser hierarki av Stack-klassen :

Stack Class i Java



Klassen støtter en standard konstruktør Stable() som er vant til lage en tom stabel .

Erklæring:

public class Stack extends Vector>

Alle implementerte grensesnitt:

Hvordan lage en stabel?

For å lage en stabel må vi importere java.util.stack pakke og bruk Stack()-konstruktøren for denne klassen. Eksempelet nedenfor lager en tom stabel.

Stabel stabel = ny stabel();

Her er E typen objekt.

Eksempel:

Java




// Java code for stack implementation> import> java.io.*;> import> java.util.*;> class> Test> {> >// Pushing element on the top of the stack> >static> void> stack_push(Stack stack)> >{> >for>(>int> i =>0>; i <>5>; i++)> >{> >stack.push(i);> >}> >}> > >// Popping element from the top of the stack> >static> void> stack_pop(Stack stack)> >{> >System.out.println(>'Pop Operation:'>);> >for>(>int> i =>0>; i <>5>; i++)> >{> >Integer y = (Integer) stack.pop();> >System.out.println(y);> >}> >}> >// Displaying element on the top of the stack> >static> void> stack_peek(Stack stack)> >{> >Integer element = (Integer) stack.peek();> >System.out.println(>'Element on stack top: '> + element);> >}> > >// Searching element in the stack> >static> void> stack_search(Stack stack,>int> element)> >{> >Integer pos = (Integer) stack.search(element);> >if>(pos == ->1>)> >System.out.println(>'Element not found'>);> >else> >System.out.println(>'Element is found at position: '> + pos);> >}> >public> static> void> main (String[] args)> >{> >Stack stack =>new> Stack();> >stack_push(stack);> >stack_pop(stack);> >stack_push(stack);> >stack_peek(stack);> >stack_search(stack,>2>);> >stack_search(stack,>6>);> >}> }>

np.histogram

>

>

Produksjon:

Pop Operation: 4 3 2 1 0 Element on stack top: 4 Element is found at position: 3 Element not found>

Utføre ulike operasjoner på Stack-klassen

1. Legge til elementer: For å legge til et element i stabelen, kan vi bruke push() metode . Dette trykk() operasjon plasser elementet på toppen av stabelen.

Java




// Java program to add the> // elements in the stack> import> java.io.*;> import> java.util.*;> class> StackDemo {> > >// Main Method> >public> static> void> main(String[] args)> >{> >// Default initialization of Stack> >Stack stack1 =>new> Stack();> >// Initialization of Stack> >// using Generics> >Stack stack2 =>new> Stack();> >// pushing the elements> >stack1.push(>'4'>);> >stack1.push(>'All'>);> >stack1.push(>'Geeks'>);> >stack2.push(>'Geeks'>);> >stack2.push(>'For'>);> >stack2.push(>'Geeks'>);> >// Printing the Stack Elements> >System.out.println(stack1);> >System.out.println(stack2);> >}> }>

>

>

Produksjon:

[4, All, Geeks] [Geeks, For, Geeks]>

2. Få tilgang til elementet: For å hente eller hente det første elementet i stabelen eller elementet som er på toppen av stabelen, kan vi bruke kikke() metode. Elementet som hentes blir ikke slettet eller fjernet fra stabelen.

Java




// Java program to demonstrate the accessing> // of the elements from the stack> import> java.util.*;> import> java.io.*;> public> class> StackDemo {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating an empty Stack> >Stack stack =>new> Stack();> >// Use push() to add elements into the Stack> >stack.push(>'Welcome'>);> >stack.push(>'To'>);> >stack.push(>'Geeks'>);> >stack.push(>'For'>);> >stack.push(>'Geeks'>);> >// Displaying the Stack> >System.out.println(>'Initial Stack: '> + stack);> >// Fetching the element at the head of the Stack> >System.out.println(>'The element at the top of the'> >+>' stack is: '> + stack.peek());> >// Displaying the Stack after the Operation> >System.out.println(>'Final Stack: '> + stack);> >}> }>

pandas pivot

>

>

Produksjon:

Initial Stack: [Welcome, To, Geeks, For, Geeks] The element at the top of the stack is: Geeks Final Stack: [Welcome, To, Geeks, For, Geeks]>

3. Fjerning av elementer: For å hente et element fra stabelen, kan vi bruke pop() metode. Elementet sprettes fra toppen av stabelen og fjernes fra det samme.

Java




// Java program to demonstrate the removing> // of the elements from the stack> import> java.util.*;> import> java.io.*;> public> class> StackDemo {> >public> static> void> main(String args[])> >{> >// Creating an empty Stack> >Stack stack =>new> Stack();> >// Use add() method to add elements> >stack.push(>10>);> >stack.push(>15>);> >stack.push(>30>);> >stack.push(>20>);> >stack.push(>5>);> >// Displaying the Stack> >System.out.println(>'Initial Stack: '> + stack);> >// Removing elements using pop() method> >System.out.println(>'Popped element: '> >+ stack.pop());> >System.out.println(>'Popped element: '> >+ stack.pop());> >// Displaying the Stack after pop operation> >System.out.println(>'Stack after pop operation '> >+ stack);> >}> }>

>

>

Produksjon:

Initial Stack: [10, 15, 30, 20, 5] Popped element: 5 Popped element: 20 Stack after pop operation [10, 15, 30]>

Eksempel

I Java er Stack-klassen en underklasse av Vector-klassen og representerer en sist-inn-først-ut (LIFO) stabel med objekter. Den utvider Vector-klassen for å tillate enkel implementering av stabeldatastrukturen.

Her er et eksempel på hvordan du kan bruke Stack-klassen i Java:

Java




import> java.util.Stack;> public> class> StackExample {> >public> static> void> main(String[] args) {> >// Create a new stack> >Stack stack =>new> Stack();> >// Push elements onto the stack> >stack.push(>1>);> >stack.push(>2>);> >stack.push(>3>);> >stack.push(>4>);> >// Pop elements from the stack> >while>(!stack.isEmpty()) {> >System.out.println(stack.pop());> >}> >}> }>

>

>

Produksjon

4 3 2 1>

I dette eksemplet importerer vi først Stack-klassen fra java.util-pakken. Vi lager deretter et nytt stabelobjekt kalt stack ved å bruke standardkonstruktøren. Vi skyver fire heltall på stabelen ved å bruke push()-metoden. Vi popper deretter elementene fra stabelen ved å bruke pop()-metoden inne i en while-løkke. Metoden isEmpty() brukes til å sjekke om stabelen er tom før du forsøker å åpne et element.

Denne koden lager en stabel med heltall og skyver 4 heltall inn på stabelen i rekkefølgen 1 -> 2 -> 3 -> 4. Deretter popper vi elementer fra stabelen en etter en ved å bruke pop()-metoden, som fjerner og returnerer toppelementet i stabelen. Siden stabelen følger en sist-inn-først-ut-rekkefølge (LIFO), blir elementene poppet i motsatt rekkefølge av innsetting, noe som resulterer i utgangen vist ovenfor.

Stack-klassen gir flere andre metoder for å manipulere stabelen, for eksempel peek() for å hente toppelementet uten å fjerne det, search() for å søke etter et element i stabelen og returnere dets posisjon, og size() for å returnere gjeldende element. størrelsen på stabelen. Stack-klassen gir også flere konstruktører for å lage en stabel med en spesifisert startkapasitet eller ved å kopiere en eksisterende stabel.

Metoder i Stack Class

METODE

BESKRIVELSE

tømme()

Det returnerer sant hvis ingenting er på toppen av stabelen. Ellers returnerer falsk.

kikke()

Returnerer elementet på toppen av stabelen, men fjerner det ikke.

pop()

Fjerner og returnerer det øverste elementet i stabelen. Et «EmptyStackException»

Et unntak blir kastet hvis vi kaller pop() når den påkallende stabelen er tom.

push(objektelement)

Skyver et element på toppen av stabelen.

søk (objektelement)

.tostring java

Den avgjør om det finnes et objekt i stabelen. Hvis elementet blir funnet,

Den returnerer posisjonen til elementet fra toppen av stabelen. Ellers gir den -1.

Metoder arvet fra klassen java.util.Vector

METODE

BESKRIVELSE

add(Object obj) Legger til det spesifiserte elementet til slutten av denne vektoren.
add(int index, Object obj) Setter inn det spesifiserte elementet på den angitte posisjonen i denne vektoren.
addAll(Samling c)

Legger til alle elementene i den angitte samlingen til slutten av denne vektoren,

i den rekkefølgen de returneres av den angitte samlingens iterator.

addAll(int index, samling c) Setter inn alle elementene i den angitte samlingen i denne vektoren på den angitte posisjonen.
addElement(Object o) Legger til den angitte komponenten på slutten av denne vektoren, og øker størrelsen med én.
kapasitet() Returnerer gjeldende kapasitet til denne vektoren.
klar() Fjerner alle elementene fra denne vektoren.
klone() Returnerer en klon av denne vektoren.
inneholder(Objekt o) Returnerer sann hvis denne vektoren inneholder det angitte elementet.
inneholder Alle (Samling c) Returnerer sann hvis denne vektoren inneholder alle elementene i den angitte samlingen.
copyInto(Objekt []array) Kopierer komponentene til denne vektoren inn i den angitte matrisen.
elementAt(int indeks) Returnerer komponenten ved den angitte indeksen.
elementer() Returnerer en oppregning av komponentene i denne vektoren.
sikreCapacity(int minCapacity)

Øker kapasiteten til denne vektoren, om nødvendig, for å sikre at den kan holde

minst antallet komponenter spesifisert av minimumskapasitetsargumentet.

er lik() Sammenligner det spesifiserte objektet med denne vektoren for likhet.
firstElement() Returnerer den første komponenten (elementet ved indeks 0) av denne vektoren.
get (int indeks) Returnerer elementet på den angitte posisjonen i denne vektoren.
hashkode() Returnerer hash-kodeverdien for denne vektoren.
indeksOf(Objekt o)

Returnerer indeksen for den første forekomsten av det angitte elementet i denne vektoren, eller -1

hvis denne vektoren ikke inneholder elementet.

indexOf(Objekt o, int indeks) Returnerer indeksen for den første forekomsten av det spesifiserte elementet i denne vektoren, søker fremover fra indeksen, eller returnerer -1 hvis elementet ikke blir funnet.
insertElementAt(Objekt o, int indeks) Setter inn det angitte objektet som en komponent i denne vektoren ved den angitte indeksen.
er tom() Tester om denne vektoren ikke har noen komponenter.
iterator() Returnerer en iterator over elementene i denne listen i riktig rekkefølge.
lastElement() Returnerer den siste komponenten i vektoren.
lastIndexOf(Objekt o)

Returnerer indeksen for siste forekomst av det angitte elementet i denne vektoren, eller -1

Hvis denne vektoren ikke inneholder elementet.

lastIndexOf(Objekt o, int indeks)

Returnerer indeksen for siste forekomst av det spesifiserte elementet i denne vektoren,

søker bakover fra indeksen, eller returnerer -1 hvis elementet ikke blir funnet.

listIterator() Returnerer en listeiterator over elementene i denne listen (i riktig rekkefølge).
listIterator(int index)

Returnerer en listeiterator over elementene i denne listen (i riktig rekkefølge),

starter på den angitte posisjonen i listen.

remove(int index) Fjerner elementet på den angitte posisjonen i denne vektoren.
fjern (Objekt o) Fjerner den første forekomsten av det spesifiserte elementet i denne vektoren. Hvis vektoren ikke inneholder elementet, er den uendret.
removeAll(Samling c) Fjerner fra denne vektoren alle dens elementer som finnes i den angitte samlingen.
removeAllElements() Fjerner alle komponenter fra denne vektoren og setter størrelsen til null.
removeElement(Object o) Fjerner den første (laveste indekserte) forekomsten av argumentet fra denne vektoren.
removeElementAt(int index) Sletter komponenten ved den angitte indeksen.
removeRange(int fromIndex, int toIndex) Fjerner fra denne listen alle elementene hvis indeks er mellom fromIndex, inklusive, og toIndex, exclusive.
retainAll(Samling c) Beholder bare elementene i denne vektoren som finnes i den angitte samlingen.
sett(int indeks, objekt o) Erstatter elementet på den angitte posisjonen i denne vektoren med det spesifiserte elementet.
setElementAt(Objekt o, int indeks) Setter komponenten ved den angitte indeksen til denne vektoren til å være det spesifiserte objektet.
setSize(int newSize) Angir størrelsen på denne vektoren.
størrelse() Returnerer antall komponenter i denne vektoren.
subList(int fromIndex, int toIndex) Returnerer en visning av delen av denne listen mellom fromIndex, inklusive, og toIndex, exclusive.
toArray() Returnerer en matrise som inneholder alle elementene i denne vektoren i riktig rekkefølge.
toArray(Objekt []array)

Returnerer en matrise som inneholder alle elementene i denne vektoren i riktig rekkefølge; kjøretiden

typen for den returnerte matrisen er den for den angitte matrisen.

toString() Returnerer en strengrepresentasjon av denne vektoren, som inneholder strengrepresentasjonen av hvert element.
trimToSize() Trimmer kapasiteten til denne vektoren til å være vektorens nåværende størrelse.

Prioriter bruk av Om hva over Stack -:

Stack-klassen i Java er en eldre klasse og arver fra Vektor i Java . Det er en trådsikker klasse og involverer derfor overhead når vi ikke trenger trådsikkerhet. Det anbefales å bruke ArrayDeque for stackimplementering da det er mer effektivt i et enkelt-tråds miljø.

abstrakt klasse

Java




// A Java Program to show implementation> // of Stack using ArrayDeque> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >Deque stack =>new> ArrayDeque();> >stack.push(>'A'>);> >stack.push(>'B'>);> >System.out.println(stack.peek());> >System.out.println(stack.pop());> >}> }>

>

>

Produksjon:

B B>

En annen grunn til å bruke Deque over Stack er at Deque har muligheten til å bruke strømmer som konverteres til liste med å beholde LIFO-konseptet brukt mens Stack ikke gjør det.

Java




import> java.util.*;> import> java.util.stream.Collectors;> class> GFG {> >public> static> void> main (String[] args) {> > >Stack stack =>new> Stack();> >Deque deque =>new> ArrayDeque();> >stack.push(>1>);>//1 is the top> >deque.push(>1>);>//1 is the top> >stack.push(>2>);>//2 is the top> >deque.push(>2>);>//2 is the top> >List list1 = stack.stream().collect(Collectors.toList());>//[1,2]> >System.out.println(>'Using Stack -'>);> >for>(>int> i =>0>; i System.out.print(list1.get(i) + ' ' ); } System.out.println(); List list2 = deque.stream().collect(Collectors.toList());//[2,1] System.out.println('Using Deque -'); for(int i = 0; i System.out.print(list2.get(i) + ' ' ); } System.out.println(); } }>

>

>

Produksjon

Using Stack - 1 2 Using Deque - 2 1>