Τι είναι το Vector στην Java και πώς το χρησιμοποιούμε;



Αυτό το ιστολόγιο στο 'Vectors in Java' θα σας βοηθήσει να καταλάβετε πώς η κλάση του διανύσματος είναι διαφορετική από το ArrayList και θα σας βοηθήσει να μάθετε για τις διάφορες μεθόδους που εμπλέκονται.

Διανύσματα μέσα είναι μια από τις πιο συχνά χρησιμοποιούμενες δομές δεδομένων στον κόσμο του προγραμματισμού.Ολοι το ξέρουμε αυτό Πίνακες είναι δομές δεδομένων που κρατούν τα δεδομένα με γραμμικό τρόπο. Τα διανύσματα αποθηκεύουν επίσης τα δεδομένα με γραμμικό τρόπο, αλλά σε αντίθεση με τις συστοιχίες, δεν έχουν σταθερό μέγεθος. Αντ 'αυτού, το μέγεθός τους μπορεί να αυξηθεί κατά παραγγελία.

Η κατηγορία διανυσμάτων είναι μια παιδική τάξη Περίληψη τάξη και υλοποιεί Λίστα .Για να χρησιμοποιήσουμε το Vectors, πρέπει πρώτα να εισαγάγουμε κλάση Vector από το πακέτο java.util:





συνδεσιμότητα βάσης δεδομένων σε java με mysql

εισαγωγή java.util.Vector

Σε αυτό το άρθρο, θα συζητήσουμε τις ακόλουθες έννοιες των διανυσμάτων:



Ας αρχίσουμε!

Πλεονέκτημα Διάνυσμα του Java

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

Η ιδιότητα του δυναμικού μεγέθους δεν είναι μοναδική για τα Vectors στην Java. Μια άλλη δομή δεδομένων, γνωστή ως ArrayList δείχνει επίσης την ιδιότητα να έχει δυναμικό μέγεθος. Ωστόσο, το Vectors διαφέρει από το ArrayLists για δύο λόγους:

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

Τρόπος πρόσβασης σε στοιχεία στο άνυσμα

Μπορούμε να προσπελάσουμε τα μέλη δεδομένων απλά χρησιμοποιώντας το ευρετήριο του στοιχείου, όπως ακριβώς έχουμε πρόσβαση στα στοιχεία στο Arrays.



Παράδειγμα- Αν θέλουμε να αποκτήσουμε πρόσβαση στο τρίτο στοιχείο σε ένα διάνυσμα v, απλώς το αναφέρουμε ως v [3].

Κατασκευαστές διανύσματος

Παρακάτω αναφέρονται οι πολλαπλές παραλλαγές του διανύσματος κατασκευαστές διαθέσιμο για χρήση:

  1. Διάνυσμα (intitialCapacity, int Increment) - Κατασκευάζει ένα διάνυσμα με δεδομένη αρχική χωρητικότητα και την αύξηση του μεγέθους του.
  2. Διάνυσμα (intitialCapacity) - Κατασκευάζει ένα κενό φορέα με δεδομένη αρχική χωρητικότητα. Σε αυτήν την περίπτωση, η αύξηση είναι μηδέν.
  3. Διάνυσμα() - Κατασκευάζει έναν προεπιλεγμένο φορέα χωρητικότητας 10.
  4. Διάνυσμα (Συλλογή γ) - Κατασκευάζει ένα διάνυσμα με μια δεδομένη συλλογή, η σειρά των στοιχείων είναι ίδια με την επιστροφή από τον επαναληπτή της συλλογής.

Υπάρχουν επίσης τρεις προστατευμένες παράμετροι σε διανύσματα

  1. Int ικανότηταIncrement () - Αυξάνει αυτόματα τη χωρητικότητα του διανύσματος όταν το μέγεθος γίνεται μεγαλύτερο από τη χωρητικότητα.
  2. Int elementCount () - πείτε τον αριθμό των στοιχείων στο άνυσμα
  3. Object [] elementData () - πίνακας στον οποίο αποθηκεύονται στοιχεία του διανύσματος

Τα πιο συνηθισμένα σφάλματα στη δήλωση διανυσμάτων

  • Διάνυσμα ρίχνει ένα IlegalArgumentException εάν το InitialSize του διανύσματος που ορίζεται είναι αρνητικό.
  • Εάν η καθορισμένη συλλογή είναι μηδενική, ρίχνει NullPointerException

Σημείωση:

  1. Εάν δεν έχει καθοριστεί η αύξηση του διανύσματος, τότε θα είναι η χωρητικότηταδιπλασιάζεται σε κάθε κύκλο αύξησης.
  2. Η χωρητικότητα ενός διανύσματος δεν μπορεί να είναι κάτω από το μέγεθος, μπορεί να ισούται με αυτό.

Ας εξετάσουμε ένα παράδειγμα αρχικοποίησης Vectors Κατασκευαστών.

Παράδειγμα: Αρχικοποίηση φορέων κατασκευής

/ Κώδικας Java που απεικονίζει Vector Constructors εισαγωγή java.util. * Δημόσια τάξη Main {public static void main (String [] args) {// create default vector Vector v1 = new Vector () // create a vector of δεδομένου Size Vector v2 = νέο διάνυσμα (20) // δημιουργία διανύσματος δεδομένου μεγέθους και διανύσματος αύξησης v3 = νέο διάνυσμα (30,10) v2.add (100) v2.add (100) v2.add (100) // δημιουργία διανύσματος με δεδομένο συλλογή Διάνυσμα v4 = νέο Vector (v2) System.out.println («Vector v1 χωρητικότητας» + v1.capacity ()) System.out.println («Vector v2 χωρητικότητας» + v2.capacity ()) System.out .println ('Vector v3 χωρητικότητας' + v3.capacity ()) System.out.println ('Vector v4 χωρητικότητας' + v4.capacity ())}

Παραγωγή

Κατασκευαστές - Διανύσματα σε Java - Edureka

Κατανομή μνήμης διανυσμάτων

Μέχρι στιγμής, πρέπει να έχετε καταλάβει ότι τα Vectors δεν έχουν σταθερό μέγεθος, αλλά έχουν τη δυνατότητα να αλλάζουν δυναμικά το μέγεθός τους. Κάποιος μπορεί να πιστεύει ότι τα διανύσματα διαθέτουν αόριστο μεγάλο χώρο για την αποθήκευση αντικειμένων. Αυτό όμως δεν συμβαίνει. Τα διανύσματα μπορούν να αλλάξουν το μέγεθός τους με βάση δύο πεδία «χωρητικότητα» και «χωρητικότητα». Αρχικά, ένα μέγεθος ίσο με το πεδίο «χωρητικότητας» κατανέμεται όταν δηλώνεται ένα διάνυσμα. Μπορούμε να εισαγάγουμε στοιχεία ίσο με την χωρητικότητα. Αλλά μόλις εισαχθεί το επόμενο στοιχείο, αυξάνει το μέγεθος του πίνακα με το μέγεθος «capacityIncrement». Ως εκ τούτου, είναι σε θέση να αλλάξει δυναμικά το μέγεθός του.

Για ένα προεπιλεγμένος κατασκευαστής , η χωρητικότητα διπλασιάζεται κάθε φορά που η χωρητικότητα είναι πλήρης και πρόκειται να εισαχθεί ένα νέο στοιχείο.

Παράδειγμα - Ας υποθέσουμε ότι έχουμε ένα φορέα InitialCapacity 5 και Χωρητικότητα από 2. Έτσι, το αρχικό μέγεθος του διανύσματος είναι 5 στοιχεία Εισάγουμε 5 στοιχεία σε αυτόν τον φορέα ένα προς ένα, δηλαδή 1,2,3,4,5. Όταν προσπαθούμε να εισαγάγουμε ένα άλλο στοιχείο στον φορέα, δηλαδή το 6, το μέγεθος του διανύσματος θα αυξηθεί κατά 2. Ως εκ τούτου, το μέγεθος του διανύσματος είναι τώρα 7. Έτσι, ο φορέας προσαρμόζει εύκολα το μέγεθός του σύμφωνα με τον αριθμό. των στοιχείων.

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

Μέθοδοι στο άνυσμα

Ας ρίξουμε μια ματιά σε μερικές πολύ συχνά χρησιμοποιούμενες μεθόδους φορέα.

  • Boolean προσθήκη (αντικείμενο o) - Προσθέτει ένα στοιχείο στο τέλος του διανύσματος.
// Κώδικας Java που δείχνει τη μέθοδο boolean add () εισαγωγής java.util. * Δημόσια κλάση Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (1 ) // Προσθέτει 1 στο τέλος της λίστας v.add ('Java') // Προσθέτει 'Java' στο τέλος της λίστας v.add ('is') // Προσθήκες 'είναι' στο τέλος του list v.add ('Fun') // Προσθέτει 'Fun' στο τέλος της λίστας System.out.println ('The vector is' + v)}}

Παραγωγή

  • Void add (int Index, E element) - Προσθέτει το δεδομένο στοιχείο στο καθορισμένο ευρετήριο του διανύσματος
// Κώδικας Java που δείχνει τη μέθοδο άσκησης προσθήκης () εισαγωγή java.util. * Δημόσια τάξη Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (0 , 1) // Προσθέτει 1 στο ευρετήριο 0 v.add (1, 'Java') // Προσθέτει 'Java' στο ευρετήριο 1 v.add (2, 'is') // Προσθέτει 'είναι' στο ευρετήριο 2 v.add (3, 'Fun') // Προσθέτει 'Fun' στο ευρετήριο 3 v.add (4, '!!!') // Προσθέτει 'Fun' στο ευρετήριο 4 System.out.println (' Το διάνυσμα είναι '+ v)}}

Παραγωγή

  • Boolean Remove (αντικείμενο o) - Καταργεί την αφαίρεση του στοιχείου στο δεδομένο ευρετήριο του διανύσματος
// Κώδικας Java που δείχνει boolean remove () μέθοδος εισαγωγής java.util. * Δημόσια κλάση Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (1 ) // Προσθέτει 1 στο τέλος της λίστας v.add ('Java') // Προσθέτει 'Java' στο τέλος της λίστας v.add ('is') // Προσθήκες 'είναι' στο τέλος του list v.add ('Fun') // Προσθέτει το 'Fun' στο τέλος της λίστας System.out.println ('Vector πριν την αφαίρεση' + v) v.remove (1) System.out.println ('Vector μετά αφαίρεση '+ v)}}

Παραγωγή

  • Boolean removeElement ( Αντικείμενο obj) - Διαγράφει το στοιχείο με το όνομά του obj (όχι από τον αριθμό ευρετηρίου)
// Κώδικας Java που δείχνει τη μέθοδο removeElement () εισαγωγής java.util. * Δημόσια κλάση Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (1) // Προσθέτει 1 στο τέλος της λίστας v.add ('Java') // Προσθέτει 'Java' στο τέλος της λίστας v.add ('is') // Προσθήκες 'είναι' στο τέλος της λίστας v.add ('Fun') // Προσθέτει το 'Fun' στο τέλος της λίστας System.out.println ('Vector πριν από την αφαίρεση' + v) v.removeElement ('Java') System.out.println ('Vector μετά την αφαίρεση '+ v)}}

Παραγωγή

  • Μέγεθος Int () - Επιστρέφει το μέγεθος του διανύσματος.
// Κωδικός Java που δείχνει το μέγεθος () μέθοδος εισαγωγής java.util. * Δημόσια τάξη Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (0, 1) // Προσθέτει 1 στο ευρετήριο 0 v.add (1, 'Java') // Προσθέτει 'Java' στο ευρετήριο 1 v.add (2, 'is') // Προσθήκες 'είναι' στο ευρετήριο 2 v.add (3, 'Fun') // Προσθέτει 'Fun' στο ευρετήριο 3 System.out.println ('Το μέγεθος του διανύσματος είναι' + v.size ())}}

Παραγωγή

  • Ικανότητα Int () - Επιστρέφει τη χωρητικότητα του διανύσματος
// Κώδικας Java που δείχνει τη χωρητικότητα () μέθοδος εισαγωγής java.util. * Δημόσια τάξη Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (0, 1) // Προσθέτει 1 στο ευρετήριο 0 v.add (1, 'Java') // Προσθέτει 'Java' στο ευρετήριο 1 v.add (2, 'is') // Προσθήκες 'είναι' στο ευρετήριο 2 v.add (3, 'Fun') // Προσθέτει 'Fun' στο ευρετήριο 3 System.out.println ('Η χωρητικότητα του διανύσματος είναι' + v.capacity ())}}

Παραγωγή

  • Λήψη αντικειμένου (int index) - Επιστρέφει το στοιχείο στη δεδομένη θέση του διανύσματος
// Κώδικας Java που δείχνει τη μέθοδο get () εισαγωγής java.util. * Δημόσια τάξη Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (1) // Προσθέτει 1 στο τέλος της λίστας v.add ('Java') // Προσθέτει 'Java' στο τέλος της λίστας v.add ('is') // Προσθήκες 'είναι' στο τέλος της λίστας v.add ('Fun') // Προσθέτει 'Fun' στο τέλος της λίστας System.out.println ('Το στοιχείο στο ευρετήριο 1 είναι' + v.get (1))}}

Παραγωγή

  • Αντικείμενο firstElement () - Επιστρέφει το πρώτο στοιχείο
// Κώδικας Java που δείχνει τη μέθοδο firstElement () εισαγωγής java.util. * Δημόσια κλάση Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (1) // Προσθέτει 1 στο τέλος της λίστας v.add ('Java') // Προσθέτει 'Java' στο τέλος της λίστας v.add ('is') // Προσθήκες 'είναι' στο τέλος της λίστας v.add ('Fun') // Προσθέτει 'Fun' στο τέλος της λίστας System.out.println ('Το πρώτο στοιχείο είναι' + v.firstElement ())}}

Παραγωγή

  • Αντικείμενο lastElement () - Επιστρέφει το τελευταίο στοιχείο
// Κώδικας Java που δείχνει τη μέθοδο LastElement () εισαγωγής java.util. * Δημόσια τάξη Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (1) // Προσθέτει 1 στο τέλος της λίστας v.add ('Java') // Προσθέτει 'Java' στο τέλος της λίστας v.add ('is') // Προσθήκες 'είναι' στο τέλος της λίστας v.add ('Fun') // Προσθέτει 'Fun' στο τέλος της λίστας System.out.println ('Το τελευταίο στοιχείο είναι' + v.lastElement ())}}

Παραγωγή

  • Boolean ισούται με (αντικείμενο o) - Συγκρίνει το διάνυσμα με το καθορισμένο αντικείμενο για ισότητα. Επιστρέφει αληθές εάν όλα τα στοιχεία είναι αληθή στους αντίστοιχους δείκτες τους
// Ο κώδικας Java που δείχνει boolean ισούται με () μέθοδο εισαγωγής java.util. * Δημόσια κλάση Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα Vector vcopy = new Vector () v.add (1) // Προσθέτει 1 στο τέλος της λίστας v.add («Java») // Προσθέτει «Java» στο τέλος της λίστας v.add («is») // Προσθέτει » είναι 'στο τέλος της λίστας v.add (' Fun ') // Προσθέτει' Fun 'στο τέλος της λίστας vcopy.add (0,1) // Προσθέτει 1 στο ευρετήριο 0 vcopy.add (1, 'Java') // Προσθέτει 'Java' στο ευρετήριο 1 vcopy.add (2, 'is') // Προσθήκες 'είναι' στο ευρετήριο 2 vcopy.add (3, 'Fun') // Προσθέτει 'Fun' στο ευρετήριο 3 vcopy.add (4, '!!!') // Προσθέτει το 'Fun' στο ευρετήριο 4 εάν (v.equals (vcopy)) System.out.println ('Και τα δύο διανύσματα είναι ίσα') άλλο Σύστημα .out.println ('Τα διανύσματα δεν είναι ίδια')}}

Παραγωγή

  • Άκυρο trimtosize () - Αυτή η μέθοδος αφαιρεί επιπλέον χωρητικότητα και διατηρεί την χωρητικότητα μόνο για να συγκρατεί τα στοιχεία, δηλαδή ίσο με το μέγεθος
// Κώδικας Java που δείχνει τη μέθοδο trimToSize () εισαγωγής java.util. * Δημόσια τάξη Main {public static void main (String [] args) {Vector v = new Vector () // Δημιουργεί ένα προεπιλεγμένο διάνυσμα v.add (0, 1) // Προσθέτει 1 στο ευρετήριο 0 v.add (1, 'Java') // Προσθέτει 'Java' στο ευρετήριο 1 v.add (2, 'is') // Προσθήκες 'είναι' στο ευρετήριο 2 v.add (3, «Fun») // Προσθέτει «Fun» στο ευρετήριο 3 System.out.println («Η χωρητικότητα του διανύσματος είναι» + v.capacity ()) v.trimToSize () System.out.println ( 'Η χωρητικότητα του διανύσματος είναι' + v.capacity ())}}

Παραγωγή


Άλλες σημαντικές μέθοδοι

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

Όνομα της μεθόδου Λειτουργία της μεθόδου

Boolean isEmpty ()

ελέγχει αν υπάρχουν στοιχεία ή όχι

Το Boolean περιέχει (αντικείμενο o)

χρησιμοποιείται για τον έλεγχο της ύπαρξης ενός συγκεκριμένου στοιχείου, ας πούμε o

int indexOf (αντικείμενο o)

Επιστρέφει τον δείκτη του στοιχείου o

void removeRange (int s, int e)

αφαιρεί στοιχεία από το διάνυσμα ξεκινώντας από το s και τελειώνει με (e-1)

κενό καθαρό ()

ποιοι είναι οι 6 τρόποι χρήσης αυτής της λέξης-κλειδιού

αφαιρεί όλα τα στοιχεία

άκυρη διασφάλιση Χωρητικότητα (int c)

Αυξάνει την χωρητικότητα κατά c

void setSize (int)

Ορίζει το μέγεθος σε s. Εάν το μέγεθος s>, η επιπλέον χωρητικότητα είναι γεμάτη με τιμές null. Εάν είναι

Στοιχείο αντικειμένου At (int a)

επιστρέφει το υπάρχον στοιχείο στον αριθμό ευρετηρίου a

Σύνολο αντικειμένων (int a, Object o)

αντικαθιστά το στοιχείο που υπάρχει στο ευρετήριο a με το δεδομένο στοιχείο o

Αντικείμενο [] toArray ()

επιστρέφει έναν πίνακα που περιέχει τα ίδια στοιχεία με το διάνυσμα

κλάση σαρωτή σε παραδείγματα java

Αντικείμενο κλώνου ()

Το διανυσματικό αντικείμενο αντιγράφεται

Boolean addAll (Συλλογή γ)

προσθέτει όλα τα στοιχεία της Συλλογής c στο διάνυσμα

Boolean addAll (int a, Συλλογή γ)

εισάγει όλα τα στοιχεία της Συλλογής c στο διάνυσμα στο καθορισμένο ευρετήριο a

Boolean retainAll (Συλλογή γ)

διατηρεί όλα τα στοιχεία του διανύσματος που υπάρχουν επίσης στη Συλλογή γ

Λίστα δευτερεύουσας λίστας (int s, int e)

επιστρέφει τα στοιχεία, ως αντικείμενο λίστας, ξεκινώντας από το s και τελειώνει με (e-1) από το διάνυσμα.

Καθώς κάθε καλό πράγμα τελειώνει, έτσι είναι και το blog μας στο Vectors . Ελπίζουμε ότι μπορέσαμε να καλύψουμε όλες τις πτυχές του java vectors σε αυτό το blog και μπορέσατε να συγκεντρώσετε κάποιες γνώσεις σχετικά με το Vectors.

Βεβαιωθείτε ότι εξασκείστε όσο το δυνατόν περισσότερο και επαναφέρετε την εμπειρία σας.

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

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