Τι είναι το Dynamic Array στην Java;

Ο δυναμικός πίνακας στην Java είναι ένας τύπος πίνακα με τεράστια βελτίωση για αυτόματη αλλαγή μεγέθους. Ο μόνος περιορισμός των συστοιχιών είναι ότι είναι ένα σταθερό μέγεθος.

Πίνακες μέσα είναι ομοιογενείς δομές δεδομένων που εφαρμόζονται στην Java ως αντικείμενα. Οι πίνακες αποθηκεύουν μία ή περισσότερες τιμές ενός συγκεκριμένου τύπου δεδομένων και παρέχουν ευρετηριασμένη πρόσβαση για την αποθήκευση των ίδιων. Ένα συγκεκριμένο στοιχείο σε έναν πίνακα είναι προσβάσιμο από το ευρετήριό του. Σε αυτό το άρθρο, θα συζητήσουμε το Dynamic Array στην Java με την ακόλουθη σειρά:



Εισαγωγή στο Dynamic Array στην Java

Ο δυναμικός πίνακας είναι ένας τέτοιος τύπος πίνακα με τεράστια βελτίωση για αυτόματη αλλαγή μεγέθους. Ο μόνος περιορισμός των συστοιχιών είναι ότι είναι ένα σταθερό μέγεθος. Αυτό μεταφράζεται σε μια έννοια που μπορείτε να καθορίσετε μόνο τον αριθμό των στοιχείων που ο πίνακας σας μπορεί να διατηρήσει εκ των προτέρων. Από την άλλη πλευρά, οι δυναμικές συστοιχίες μπορούν να επεκταθούν καθώς προσθέτουμε περισσότερα στοιχεία σε πραγματικό χρόνο. Επομένως, ο κωδικοποιητής δεν χρειάζεται να καθορίσει το μέγεθος του πίνακα εκ των προτέρων. Έχει επίσης μερικά ακόμη πλεονεκτήματα:



  • Γρήγορη αναζήτηση . Όπως και οι συστοιχίες, όταν ανακτάτε το στοιχείο σε ένα δεδομένο ευρετήριο, απαιτείται χρόνος O (1).



  • Μεταβλητό μέγεθος . Μπορούμε να εισαγάγουμε όσα στοιχεία θέλουμε και μια δυναμική συστοιχία θα επεκταθεί ανάλογα για να τα κρατήσει.

  • Φιλικό προς την προσωρινή μνήμη . Παρόμοια με τις συστοιχίες, οι δυναμικές συστοιχίες μπορούν να τοποθετήσουν αντικείμενα το ένα δίπλα στο άλλο στη μνήμη, κάνοντας έτσι αποτελεσματική χρήση των cache.



Υπάρχουν ορισμένα μειονεκτήματα στη χρήση δυναμικών συστοιχιών στον κώδικα μας. Παρόλο που, χρησιμοποιούμε δυναμικές συστοιχίες περισσότερο από οτιδήποτε στις περισσότερες εφαρμογές, υπάρχουν ορισμένες περιπτώσεις όπου δεν γίνονται η πιο προτιμώμενη επιλογή λόγω των περιορισμών της.

ρηχό αντίγραφο έναντι βαθιού αντιγράφου java
  • Αργά η χειρότερη περίπτωση προσαρτά . Κανονικά, ενώ η προσθήκη ενός νέου στοιχείου στο τέλος μιας δυναμικής συστοιχίας, χρειάζεται το Ο (1) σε μία περίπτωση. Ωστόσο, εάν η δυναμική συστοιχία δεν έχει πλέον δείκτες για ένα νέο στοιχείο, τότε θα πρέπει να επεκταθεί, η οποία παίρνει το O (n) κάθε φορά.

  • Ακριβές ένθετα και διαγραφές. Παρόμοια με τις συστοιχίες, τα στοιχεία αποθηκεύονται το ένα δίπλα στο άλλο. Έτσι, ενώ προσθέτετε ή αφαιρείτε ένα στοιχείο στο κέντρο ενός πίνακα, απαιτείται ώθηση άλλων στοιχείων, που παίρνουν το O (n) κάθε φορά.

Τα παρακάτω διαγράμματα δείχνουν πώς λειτουργούν οι συστοιχίες σε πραγματικό χρόνο και απεικονίζουν πώς συσσωρεύονται τα στοιχεία. Δείχνει επίσης πώς αλλάζουν οι οδηγίες για μια μέση περίπτωση και τη χειρότερη περίπτωση λειτουργιών πίνακα.

τι είναι η επιστήμη δεδομένων;

πίνακας - δυναμικός πίνακας στην Java - edureka

Μέγεθος έναντι χωρητικότητας

Όταν αρχικοποιούμε μια δυναμική συστοιχία, η υλοποίηση της δυναμικής συστοιχίας δημιουργεί έναν κατανοητό πίνακα σταθερού μεγέθους. Το αρχικό μέγεθος αντιστοιχεί στην υλοποίηση. Για παράδειγμα, ας φτιάξουμε τον πίνακα υλοποίησης για να χρησιμοποιήσουμε 10 δείκτες. Τώρα προσθέτουμε τέσσερα στοιχεία στη δυναμική μας σειρά. Τώρα, η δυναμική μας σειρά έχει μήκος τεσσάρων. Ωστόσο, ο υποκείμενος πίνακας μας έχει μήκος 10. Ως εκ τούτου, θα μπορούσαμε να πούμε ότι το δυναμικό μέγεθος πίνακα είναι τέσσερα και η χωρητικότητά του είναι 10. Ένας δυναμικός πίνακας αποθηκεύει ένα συγκεκριμένο τελικό ευρετήριο για να παρακολουθεί το τελικό σημείο του δυναμικού πίνακα και την αρχή σημείο από όπου ξεκινά η επιπλέον χωρητικότητα.

Διπλασιασμός προσαρτά

Μπορεί να υπάρχουν περιπτώσεις όπου προσπαθούμε να προσθέσουμε ένα στοιχείο σε έναν πίνακα όπου η χωρητικότητα είναι ήδη πλήρης. Ως εκ τούτου, για τη δημιουργία δυναμικών συστοιχιών χώρου δημιουργείτε αυτόματα νέα, μεγαλύτερη και υποκείμενη διάταξη. Συνήθως, γίνεται διπλάσιο από τον χειρισμό τυχόν νέων προσθηκών, τις οποίες δεν περίμεναν νωρίτερα. Ως εκ τούτου, η αντιγραφή κάθε αντικειμένου δεν χρειάζεται χρόνο. Κάθε φορά που η προσθήκη ενός στοιχείου στη δυναμική συστοιχία μας δημιουργείται αυτόματα ένας νέος υποκείμενος πίνακας διπλού μεγέθους, ο οποίος δεν απαιτεί χρόνο.

Διαγραφή στοιχείου

Κατά τη διαγραφή ενός στοιχείου από έναν πίνακα, η προεπιλεγμένη μέθοδος 'remove ()' αφαιρεί ένα στοιχείο από το τέλος και αποθηκεύει αυτόματα το μηδέν στο τελευταίο ευρετήριο. Θα διαγράψει επίσης στοιχεία σε ένα συγκεκριμένο ευρετήριο καλώντας τη μέθοδο removeAt (i) όπου το 'I' είναι ευρετήριο. Η μέθοδος removeAt (i) μετατοπίζει όλα τα δεξιά στοιχεία στην αριστερή πλευρά από το δεδομένο ευρετήριο.

java βρείτε τον μεγαλύτερο αριθμό στη λίστα

Αλλαγή μεγέθους μιας σειράς

Όταν οι συστοιχίες δεν έχουν δεδομένα στη δεξιά πλευρά της συστοιχίας, τα οποία από ό, τι παίρνουν περιττή μνήμη, η μέθοδος srinkSize () απελευθερώνει επιπλέον μνήμη. Όταν καταναλώνονται όλες οι υποδοχές και προστίθενται πρόσθετα στοιχεία, ο υποκείμενος πίνακας σταθερού μεγέθους πρέπει να αυξάνει το μέγεθος. Η πραγματική αλλαγή μεγέθους είναι ακριβή, καθώς πρέπει να διαθέσουμε έναν μεγαλύτερο πίνακα και να αντιγράψουμε προς τα εμπρός όλα τα στοιχεία από έναν πίνακα που έχετε υπερβεί για να μπορέσει επιτέλους να προσθέσει ένα νέο στοιχείο.

Ακολουθεί ένα παράδειγμα προγράμματος όπου το μέγεθος του πίνακα γίνεται πλήρες και τα νέα στοιχεία αντιγράφονται σε έναν νέο πίνακα διπλού μεγέθους. Το στοιχείο που είναι ένα στοιχείο συμβολοσειράς που ονομάζεται 'Mahavir' είναι μια προσθήκη στην ήδη πλήρη σειρά μεγέθους 3.

import java.util.ArrayList import java.util.Arrays import java.util.Scanner δημόσια κλάση AddingItemsDynamically {public static void main (String args []) {Scanner sc = new Scanner (System.in) System.out.println (' Εισαγάγετε το μέγεθος του πίνακα :: ') int size = sc.nextInt () String myArray [] = new String [size] System.out.println (' Enter element of the array (Strings) :: ') for (int i = 0 i

Παραγωγή:

Με αυτό, φτάνουμε στο τέλος του άρθρου Dynamic Array σε Java. Ελπίζω να έχετε μια ιδέα για το πώς να εργαστείτε με δυναμικές συστοιχίες.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για φοιτητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για τις βασικές όσο και για τις προηγμένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου 'Dynamic Array in Java' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.