Η κλάση Java Stack επεκτείνει την κλάση Vector. Σας επιτρέπει να δημιουργήσετε νέα στοιχεία, να προβάλετε ένα στοιχείο στη στοίβα, να ενημερώσετε ένα στοιχείο στη στοίβα και να διαγράψετε όλα τα στοιχεία από τη στοίβα. Οι στοίβες επεξεργάζονται δεδομένα με σειρά πρώτου-σε-τελευταίο (FILO). Αυτό σημαίνει ότι μπορείτε να προσθέσετε ή να αφαιρέσετε στοιχεία μόνο από την κορυφή μιας στοίβας.
Η δομή δεδομένων στοίβας έχει πέντε κύριες μεθόδους. Ωστόσο, η κλάση Java Stack έχει επίσης πρόσβαση σε περισσότερες από 40 άλλες μεθόδους, τις οποίες κληρονομεί από την κλάση Vector.
Δημιουργία στοίβας σε Java
Η τάξη Stack έχει έναν μόνο κατασκευαστή που σας επιτρέπει να δημιουργήσετε μια κενή στοίβα. Κάθε Στοίβα έχει ένα όρισμα τύπου, το οποίο υπαγορεύει τον τύπο των δεδομένων που θα αποθηκεύσει.
εισαγωγή java.util. Σωρός;
δημόσιοτάξηΚύριος{
δημόσιοστατικόςκενόςκύριος(String[] args){
// δημιουργία στοίβας
ΣωρόςΠελάτες = νέος Σωρός ();
}
}
Ο παραπάνω κώδικας δημιουργεί μια δομή δεδομένων στοίβας που ονομάζεται Οι πελάτες που αποθηκεύει τιμές συμβολοσειράς.
Συμπλήρωση στοίβας
Μία από τις πέντε κύριες μεθόδους της κλάσης Stack είναι η Σπρώξτε() μέθοδος. Παίρνει ένα μεμονωμένο στοιχείο που έχει τον ίδιο τύπο δεδομένων με τη Στοίβα και το σπρώχνει στην κορυφή της Στοίβας.
// συμπληρώστε μια στοίβα
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");
Ο παραπάνω κωδικός συμπληρώνει τη Στοίβα πελατών με επτά στοιχεία. Σπρώχνει κάθε νέο στοιχείο στην κορυφή της Στοίβας. Έτσι, το στοιχείο στην κορυφή της Στοίβας πελατών είναι η Jessica Brown. Και μπορείτε να το επιβεβαιώσετε χρησιμοποιώντας τη Στοίβα κρυφοκοίταγμα() μέθοδος. ο κρυφοκοίταγμα() Η μέθοδος δεν δέχεται ορίσματα. Επιστρέφει το αντικείμενο στην κορυφή της Στοίβας χωρίς να το αφαιρέσει.
// προβολή αντικειμένου στην κορυφή μιας στοίβας
System.out.println (Customers.peek());
Ο παραπάνω κώδικας επιστρέφει την ακόλουθη έξοδο στην κονσόλα:
Τζέσικα Μπράουν
Προβολή των αντικειμένων σε μια στοίβα
Η δομή δεδομένων στοίβας είναι αρκετά περιοριστική ως προς τον τρόπο με τον οποίο σας επιτρέπει να αλληλεπιδράτε με τα δεδομένα της. Θα πρέπει να χρησιμοποιείτε κυρίως μια Στοίβα μέσω του ανώτατου αντικειμένου της. Ωστόσο, μπορείτε επίσης να χρησιμοποιήσετε μεθόδους που κληρονομήθηκαν από την κλάση Vector για πρόσβαση σε αυθαίρετα στοιχεία. Τέτοιες μέθοδοι περιλαμβάνουν το elementAt και το removeElementAt.
Ο ευκολότερος τρόπος για να αποκτήσετε μια επισκόπηση των περιεχομένων μιας Στοίβας είναι απλώς να την εκτυπώσετε. Περάστε ένα αντικείμενο στοίβας System.out.println και η μέθοδος toString() του Stack θα παράγει μια ωραία σύνοψη:
// προβολή όλων των στοιχείων μιας στοίβας
System.out.println (Πελάτες);
Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Αναζήτηση για μια θέση αντικειμένου σε μια στοίβα
Εάν γνωρίζετε ένα στοιχείο στη Στοίβα, μπορείτε να προσδιορίσετε τη θέση του ευρετηρίου ή τη θέση του σε σχέση με την κορυφή της Στοίβας. ο indexOf() μέθοδος παίρνει ένα στοιχείο στη Στοίβα και επιστρέφει τη θέση ευρετηρίου του. Λάβετε υπόψη ότι μια Στοίβα αρχίζει να δημιουργεί ευρετηρίαση των στοιχείων της στο μηδέν.
// βρείτε μια θέση ευρετηρίου στοιχείου
System.out.println (Customers.indexOf("Jane Doe"));
Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:
0
ο Αναζήτηση() μέθοδος είναι μία από τις κύριες μεθόδους της κλάσης Stack. Επιστρέφει μια θέση στοιχείου σε σχέση με την κορυφή της στοίβας, όπου το στοιχείο στην κορυφή της στοίβας έχει τη θέση νούμερο ένα.
System.out.println (Customers.search("Jane Doe"));
Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:
7
Εάν παρέχετε το Αναζήτηση() ή το indexOf() μεθόδους με ένα στοιχείο που δεν βρίσκεται στη Στοίβα, θα επιστρέψουν ένα αρνητικό.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:
-1
-1
Ενημέρωση αντικειμένων σε στοίβα
Μπορείτε να χειριστείτε μόνο ένα στοιχείο στο επάνω μέρος μιας Στοίβας. Έτσι, εάν θέλετε να ενημερώσετε ένα στοιχείο που δεν βρίσκεται στην κορυφή της Στοίβας, θα πρέπει να εμφανίσετε όλα τα στοιχεία πάνω από αυτό. ο κρότος() Η μέθοδος είναι μία από τις κύριες μεθόδους του Stack. ο κρότος() Η μέθοδος δεν δέχεται ορίσματα. Αφαιρεί το στοιχείο στην κορυφή της στοίβας και το επιστρέφει.
// ενημέρωση αντικειμένου
Customers.pop();
Customers.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Πελάτες);
Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Όπως μπορείτε να δείτε από την έξοδο, ο κώδικας ενημερώνει το επώνυμο της Ella σε James. Περιλαμβάνει μια διαδικασία που βγάζει στοιχεία από τη στοίβα μέχρι να φτάσετε στο αντικείμενο-στόχο. Στη συνέχεια εμφανίζεται το αντικείμενο-στόχος. το ενημερώνει? και το σπρώχνει, μαζί με τα στοιχεία που βρίσκονταν στην κορυφή του αντικειμένου στόχου, πίσω στη στοίβα. Θα πρέπει να χρησιμοποιείτε ένα πρόγραμμα που εκτελεί λειτουργίες όπως η παραπάνω, κάθε φορά που θέλετε να ενημερώσετε ένα στοιχείο στη Στοίβα σας.
Διαγραφή αντικειμένου από στοίβα
Για να διαγράψετε ένα μεμονωμένο στοιχείο από τη δομή δεδομένων Stack, μπορείτε να χρησιμοποιήσετε ξανά τη μέθοδο pop(). Εάν το στοιχείο που θέλετε να διαγράψετε δεν βρίσκεται στην κορυφή, μπορείτε να αναδυθείτε στοιχεία στο επάνω μέρος μέχρι να φτάσετε στο επιθυμητό.
Διαγραφή όλων των αντικειμένων σε μια στοίβα
Για να διαγράψετε όλα τα στοιχεία από μια Στοίβα, μπορείτε να χρησιμοποιήσετε το α Βρόχος Java while με τη μέθοδο pop() για να διαγράψετε τα στοιχεία ένα-ένα. Μια πιο αποτελεσματική προσέγγιση, ωστόσο, είναι η χρήση του Σαφή() μέθοδος. ο Σαφή() μέθοδος είναι αυτή που η κλάση Stack κληρονομεί από την κλάση Vector. Δεν παίρνει ορίσματα, δεν επιστρέφει τίποτα, αλλά απλώς αφαιρεί όλα τα στοιχεία μέσα στη δομή δεδομένων Stack.
// διαγραφή όλων των στοιχείων σε μια στοίβα
Customers.clear();
System.out.println (Customers.empty());
Ο παραπάνω κωδικός διαγράφει όλα τα στοιχεία στη Στοίβα πελατών. Στη συνέχεια χρησιμοποιεί το αδειάζω() μέθοδος για να ελέγξετε εάν η Στοίβα είναι άδεια. ο αδειάζω() είναι μια άλλη κύρια μέθοδος της κλάσης στοίβας Java. Δεν παίρνει ορίσματα και επιστρέφει μια Boolean τιμή. Αυτή η μέθοδος επιστρέφει true εάν η Στοίβα είναι άδεια και false διαφορετικά.
Ο παραπάνω κώδικας εκτυπώνει την ακόλουθη έξοδο στην κονσόλα:
αληθής
Πρακτικές εφαρμογές για τη δομή δεδομένων στοίβας
Η δομή δεδομένων Stack είναι πολύ περιοριστική. Δεν παρέχει τόση ευελιξία στην επεξεργασία δεδομένων όσο άλλες δομές δεδομένων. Αυτό θέτει το ερώτημα: πότε πρέπει να χρησιμοποιήσετε τη δομή δεδομένων Stack;
Η δομή δεδομένων Stack είναι ιδανική για εφαρμογές που απαιτούν επεξεργασία δεδομένων με αντίστροφη σειρά. Αυτά περιλαμβάνουν:
- Μια εφαρμογή που ελέγχει αν μια λέξη είναι παλίνδρομο.
- Μια εφαρμογή που μετατρέπει δεκαδικούς αριθμούς σε δυαδικούς αριθμούς.
- Εφαρμογές που επιτρέπουν στους χρήστες την αναίρεση.
- Παιχνίδια που επιτρέπουν στον χρήστη να επιστρέψει σε προηγούμενες κινήσεις, όπως ένα παιχνίδι σκακιού.