Σε αυτό το σεμινάριο, θα μάθουμε για την κλάση Vector και πώς να τη χρησιμοποιήσουμε. Θα μάθουμε επίσης πώς είναι διαφορετικό από την τάξη ArrayList και γιατί πρέπει να χρησιμοποιήσουμε λίστες πίνακα.
Το Vector
μάθημα είναι μια εφαρμογή της List
διεπαφής που μας επιτρέπει να δημιουργήσουμε συστοιχίες με δυνατότητα αλλαγής μεγέθους παρόμοια με την κλάση ArrayList.
Java Vector εναντίον ArrayList
Στην Java, τόσο ArrayList
και Vector
υλοποιεί τη List
διεπαφή και παρέχει τις ίδιες λειτουργίες. Ωστόσο, υπάρχουν κάποιες διαφορές μεταξύ τους.
Η Vector
τάξη συγχρονίζει κάθε μεμονωμένη λειτουργία. Αυτό σημαίνει ότι όποτε θέλουμε να εκτελέσουμε κάποια λειτουργία σε διανύσματα, η Vector
κλάση εφαρμόζει αυτόματα ένα κλείδωμα σε αυτήν τη λειτουργία.
Επειδή όταν ένα νήμα έχει πρόσβαση σε ένα διάνυσμα, και ταυτόχρονα ένα άλλο νήμα προσπαθεί να αποκτήσει πρόσβαση, δημιουργείται μια εξαίρεση που ονομάζεται ConcurrentModificationException
. Επομένως, αυτή η συνεχής χρήση κλειδαριάς για κάθε λειτουργία καθιστά τα διανύσματα λιγότερο αποτελεσματικά.
Ωστόσο, σε λίστες πίνακα, οι μέθοδοι δεν συγχρονίζονται. Αντ 'αυτού, χρησιμοποιεί τη Collections.synchronizedList()
μέθοδο που συγχρονίζει τη λίστα ως σύνολο.
Σημείωση: Συνιστάται η χρήση ArrayList
στη θέση του Vector
επειδή τα διανύσματα δεν είναι ασφαλή στο νήμα και είναι λιγότερο αποτελεσματικά.
Δημιουργία διανύσματος
Εδώ είναι πώς μπορούμε να δημιουργήσουμε διανύσματα στην Java.
Vector vector = new Vector();
Εδώ, το Type υποδεικνύει τον τύπο μιας συνδεδεμένης λίστας. Για παράδειγμα,
// create Integer type linked list Vector vector= new Vector(); // create String type linked list Vector vector= new Vector();
Μέθοδοι του διανύσματος
Η Vector
κλάση παρέχει επίσης τις εφαρμογές με δυνατότητα αλλαγής μεγέθους της List
διεπαφής (παρόμοια με την ArrayList
κλάση). Μερικές από τις Vector
μεθόδους είναι:
Προσθήκη στοιχείων στο διάνυσμα
add(element)
- προσθέτει ένα στοιχείο στα διανύσματαadd(index, element)
- προσθέτει ένα στοιχείο στην καθορισμένη θέσηaddAll(vector)
- προσθέτει όλα τα στοιχεία ενός διανύσματος σε ένα άλλο διάνυσμα
Για παράδειγμα,
import java.util.Vector; class Main ( public static void main(String() args) ( Vector mammals= new Vector(); // Using the add() method mammals.add("Dog"); mammals.add("Horse"); // Using index number mammals.add(2, "Cat"); System.out.println("Vector: " + mammals); // Using addAll() Vector animals = new Vector(); animals.add("Crocodile"); animals.addAll(mammals); System.out.println("New Vector: " + animals); ) )
Παραγωγή
Διάνυσμα: (Σκύλος, Άλογο, Γάτα) Νέο Διάνυσμα: (Κροκόδειλος, Σκύλος, Άλογο, Γάτα)
Πρόσβαση σε διανυσματικά στοιχεία
get(index)
- επιστρέφει ένα στοιχείο που καθορίζεται από το ευρετήριοiterator()
- επιστρέφει ένα αντικείμενο επανάληψης για τη διαδοχική πρόσβαση σε διανυσματικά στοιχεία
Για παράδειγμα,
import java.util.Iterator; import java.util.Vector; class Main ( public static void main(String() args) ( Vector animals= new Vector(); animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); // Using get() String element = animals.get(2); System.out.println("Element at index 2: " + element); // Using iterator() Iterator iterate = animals.iterator(); System.out.print("Vector: "); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) )
Παραγωγή
Στοιχείο στο ευρετήριο 2: Διάνυσμα γάτας: Σκύλος, άλογο, γάτα,
Κατάργηση διανυσματικών στοιχείων
remove(index)
- αφαιρεί ένα στοιχείο από την καθορισμένη θέσηremoveAll()
- αφαιρεί όλα τα στοιχείαclear()
- αφαιρεί όλα τα στοιχεία. Είναι πιο αποτελεσματικό απόremoveAll()
Για παράδειγμα,
import java.util.Vector; class Main ( public static void main(String() args) ( Vector animals= new Vector(); animals.add("Dog"); animals.add("Horse"); animals.add("Cat"); System.out.println("Initial Vector: " + animals); // Using remove() String element = animals.remove(1); System.out.println("Removed Element: " + element); System.out.println("New Vector: " + animals); // Using clear() animals.clear(); System.out.println("Vector after clear(): " + animals); ) )
Παραγωγή
Αρχικό διάνυσμα: (Σκύλος, Άλογο, Γάτα) Καταργημένο στοιχείο: Άλογο Νέο διάνυσμα: (Σκύλος, Γάτα) Διάνυσμα μετά από διαγραφή (): ()
Άλλες μέθοδοι φορέα
Μέθοδοι | Περιγραφές |
---|---|
set() | αλλάζει ένα στοιχείο του διανύσματος |
size() | επιστρέφει το μέγεθος του διανύσματος |
toArray() | μετατρέπει το διάνυσμα σε πίνακα |
toString() | μετατρέπει το διάνυσμα σε συμβολοσειρά |
contains() | αναζητά το διάνυσμα για καθορισμένο στοιχείο και επιστρέφει ένα δυαδικό αποτέλεσμα |