Hierdie handleiding verduidelik alles oor vektordatastruktuur in Java met voorbeelde. Jy sal leer om te skep, begin, sorteer & Gebruik 'n Java-vektor in jou programme:
'n Vektor kan gedefinieer word as 'n dinamiese skikking wat op sy eie kan groei of krimp, dit wil sê vektor sal groei wanneer meer elemente daarby gevoeg word en sal krimp wanneer elemente word daarvan verwyder.
Hierdie gedrag is anders as dié van skikkings wat staties is. Maar soortgelyk aan skikkings, kan vektorelemente verkry word deur heelgetalindekse te gebruik.
'n Vektor kan beskou word as soortgelyk aan 'n ander dinamiese skikkingdatastruktuur, ArrayList behalwe vir die twee hieronder verskille:
- Die vektor is gesinchroniseer d.w.s. al die metodes in Vector is as 'gesinchroniseer' gemerk en sodra 'n metode aangeroep is, kan dieselfde metode nie opgeroep word nie, tensy die vorige oproep geëindig.
- Die vektorklas het baie metodes wat nie deel is van die versamelingsraamwerk nie, maar sy nalatenskapmetodes.
Java Vector Class
'n Vectorklas is afgesien van die " java.util "-pakket en implemente List-koppelvlak. 'n Vektor is 'n skikking van voorwerpe of vektor van voorwerpe.
'n Klasverklaring van vektorklas word hieronder gegee:
public class Vector extends Object implements List, Cloneable, Serializable
Soos hierbo getoon, strek 'n vektorklas uit " java.lang.object ” en implementeer Lys-, Kloonbare en Serialiseerbare koppelvlakke.
Hoe om 'n vektor in Java te skep?
Jy kanskep 'n vektor-objek deur enige van die volgende vektorkonstruktormetodes te gebruik.
Konstruktorprototipe | Beskrywing |
---|---|
vector() | Dit is die verstekkonstruktor van die Vector-klas. Dit skep 'n leë vektor met grootte 10. |
vector(int initialCapacity) | Hierdie oorlaaide konstruktor konstrueer 'n leë vektorvoorwerp met die kapasiteit = initialCapacity. |
vector(int initialCapacity, int kapasiteitInkrement) | Hierdie konstruktormetode skep 'n leë vektorvoorwerp met gespesifiseerde aanvanklikeKapasiteit en kapasiteitInkrement. |
Vektor(versameling c) | 'n Vektorvoorwerp word geskep met die aanvanklike elemente van gespesifiseerde versameling c. |
Kom ons kyk na elkeen van die konstruktors om vektorobjekte te inisialiseer.
Inisialiseer vektor
(i) Vector()
Dit is die verstekkonstruktor van die Vector-klas. Wanneer jy hierdie konstruktor aanroep, word 'n vektorobjek van verstekgrootte 10 geskep.
Die algemene sintaksis van hierdie metode is:
Vektorobjek = new Vector();
Byvoorbeeld,
Vector vec1 = new Vector ();
Die stelling hierbo skep 'n nuwe vektor 'vec1' met grootte 10.
(ii) Vector(int initialCapacity)
Die oorlaaide konstruktor van die Vector-klas aanvaar 'initialCapacity' as die argument. Hierdie konstruktor skep 'n Vectorvoorwerp met die gespesifiseerde kapasiteit.
Die algemene sintaksis van die metode is:
Vektorobjek = nuwe Vektor (aanvanklike Kapasiteit);
Byvoorbeeld,
Vector vec1 = new Vector (10);
Die bogenoemde programmeringsstelling sal 'n vektorvoorwerp 'vec1' skep met die kapasiteit van 10, dit wil sê hierdie vektor kan tot 10 stoor elemente.
(iii) Vector(int initialCapacity, int kapasiteitInkrement)
Dit is nog 'n oorlaaide konstruktor van Vector-klas en dit skep 'n Vector-objek met die gespesifiseerde aanvanklike kapasiteit en inkrement vir die kapasiteit.
Die algemene sintaksis vir hierdie metode is:
Vektorobjek = nuwe Vektor (aanvanklikeKapasiteit, kapasiteitInkrement);
Byvoorbeeld,
Vector vec1 = new Vector(5,10);
In die bogenoemde stelling is die aanvanklike kapasiteit van die vektor 5 en inkrement is 10. Dit beteken wanneer die 6de element in die vektor ingevoeg word, sal die kapasiteit van die vektor verhoog word tot 15 (5 + 10). Net so, wanneer die 16de element ingevoeg word, sal die vektorkapasiteit van die vektor uitgebrei word na 25 (15 +10).
(iv) Vektor(Versameling c)
Die laaste oorlaaide konstruktor van die Vector-klas neem 'n voorafbepaalde versameling as 'n argument in en skep 'n Vector met al die elemente uit hierdie versameling as sy elemente.
Die algemene sintaksis is:
Vektorobjek = nuwe vektor (versameling c);
Byvoorbeeld,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
Diebogenoemde stelling sal 'n Vector 'vec1' skep met aanvanklike elemente as {1,2,3,4, 5}.
Om al hierdie beskrywings in gedagte te hou, sal ons 'n Vector-program laat implementeer om hierdie konstruktors beter te verstaan.
Vektormetodes in Java
Die volgende is die metodes wat deur Vector-klas in Java ondersteun word.
Metode Naam | Prototipe | Beskrywing |
---|---|---|
add | Boolean add(E e) | Voeg gegewe element by aan die einde van die vektor. |
Void add(int index, E element) | Voeg element by die vektor by die gespesifiseerde indeks. | |
addAll | Boolean addAll(Versameling c) | Voeg al die elemente van gegewe versameling by tot die einde van vektor. |
Boolean addAll(int index, Collection c) | Voeg al die elemente by in die gespesifiseerde versameling by gespesifiseerde indeks. | |
addElement | void addElement(E obj) | Voeg die gespesifiseerde element by by die einde van die vektor deur die vektorgrootte te vergroot. |
Kapasiteit | Int kapasiteit() | Gee huidige kapasiteit van die vektor. |
Clear | Void clear() | Vee die vektor van sy elemente uit. |
Kloon | Object clone() | Kloon die vektor. |
Bevat | Boolean bevat(Object o) | Kyk of die vektor bevatgespesifiseerde element. |
containsAll | Boolean containsAll(Versameling c) | Kyk of die vektor al die elemente bevat wat in gegewe versameling. |
copyInto | Void copyInto(Object[] anArray) | Kopieer die vektorelemente in gegewe skikking. |
ElementAt | E ElementAt(int index) | Lewer vektorelement by gespesifiseerde indeks. |
Elemente | Enumerationelements() | Lewer opgesomde komponente vir die vektor. |
versekerKapasiteit | Leeg versekerKapasiteit(int minKapasiteit) | Verhoog die kapasiteit van vektor om aan die gespesifiseerde minimum kapasiteit te voldoen. |
Metode Naam | Prototipe | Beskrywing |
---|---|---|
Gelyk aan | Boolean gelyk(Object o) | Vergelyk huidige vektor met gespesifiseerde vektor om te kyk of hulle gelyk is. |
firstElement | E firstElement() | Gee die eerste element van die vektor by indeks 0. |
Get | E get(int index) | Gee die element in die vektor by die gespesifiseerde indeks terug. |
hashCode | int hashCode() | Gee die hash-kodewaarde vir die vektor terug. |
indexOf | int indexOf(Object o) | vind die indeks van die eerste voorkoms van die gegewe element in die vektor; -1 aselement is nie teenwoordig in die vektor nie. |
int indexOf(Object o, int index) | Soek die vektor vanaf die gegewe indeks in vorentoe rigting vir gespesifiseerde element; indeks as element anders gevind word -1 as die element nie gevind word nie. | |
insertElementAt | Void insertElementAt(E obj, int index) | Voeg die gegewe voorwerp in die vektor by die gegewe indeks in. |
isEmpty | Boolean isEmpty() | Gaan na of die vektor leeg is. |
Iterator | Iteratoriterator() | Gee 'n iterator terug wat gebruik word om beweeg oor die elemente van die vektor. |
lastElement | E lastElement() | Lewer die laaste element van die vektor terug . |
lastIndexOf | Int lastIndexOf(Object o) | Soek die vektor vir die laaste voorkoms van gegewe element en gee terug die indeks, of gee -1 die element word nie gevind nie. |
Int lastIndexOf(Object o, int index) | Begin soek na laaste voorkoms van die gegewe element vanaf die gegewe indeks agteruit. Wys die indeks as element gevind word anders gee -1. | |
listIterator | ListIteratorlistIterator() | Gee 'n lysiterator terug oor die vektorelemente. |
ListIteratorlistIterator(int index) | Gee 'n lysiterator terug oor die vektorelemente vanaf die gegeweindeks. |
Metodenaam | Prototipe | Beskrywing |
---|---|---|
Verwyder | E verwyder(int indeks) | Vee element by gegewe indeks uit van die vektor. |
Boolean verwyder(Object o) | Vee eerste voorkoms van die gegewe element uit die vektor uit. As element nie teenwoordig is nie, gebeur niks met die vektor nie | |
removeAll | Boolean removeAll(Versameling c) | Vee al die elemente uit die vektor uit wat teenwoordig is in die gegewe versameling. |
void removeAll Elements() | Vee alle vektorelemente uit en verminder dit dus tot grootte nul. | |
removeElement | Boolean removeElement(Object obj) | Verwyder die eerste voorkoms van die gegewe element uit die vektor. |
void removeElementAt(int) indeks) | Vee die element by die gegewe indeks uit. | |
removeRange | beskermde leemte verwyderReeks(int fromIndex, int toIndex) | Vee al die elemente uit die vektor in die gegewe reeks van fromIndex (inklusief), totoIndex (eksklusief). |
retainAll | Boolean retainAll(Versameling c) | In teenstelling met 'removeAll', behou die metode retainAll elemente in die Vector wat ooreenstem met elemente in gespesifiseerde versameling. |
set | E set(int index) , E element) | Stel die waarde by gegewe indeks met die nuwe elementverskaf. |
Void set ElementAt(E obj, int index) | Stel die gegewe elemente by die gegewe indeks. | |
setSize | Void setSize(int newSize) | Stel gegewe grootte vir hierdie vektor. |
Grootte | int size() | Gee die aantal elemente in hierdie vektor of die lengte van die vektor. |
subLys | LyssubLys(intfromIndex, inttoIndex) | Gee 'n aansig of subLys van die vektor wat wissel van vanIndex tot naIndex. |
toArray | Object[] naArray () | Skakel die gegewe vektor om in 'n skikking wat alle vektorelemente in gegewe volgorde bevat. |
T[] naArray(T[] a) | Gee 'n skikking van tipe gespesifiseer wat alle vektorelemente bevat. | |
toString | String toString() | Gee 'n stringvoorstelling van die vektor. |
trimToSize | void trimToSize() | Snoei die vektor af om die huidige grootte te akkommodeer. |
Vektorimplementering
Die volgende Java-program demonstreer die gebruik van al die konstruktormetodes hierbo beskryf.
import java.util.*; public class Main{ public static void main(String[] args) { //Create vectors v1, v2,v3 and v4 Vector v1 = new Vector(); //a vector with default constructor Vector v2 = new Vector(20); // a vector of given Size //initialize vector v2 with values v2.add(10); v2.add(20); v2.add(30); Vector v3 = new Vector(30, 10); // a vector of given Size and Increment // create a vector v4 with given collection List aList = new ArrayList(); aList.add("one"); aList.add("two"); Vector v4 = new Vector(aList); //print contents of each vector System.out.println("Vector v1 Contents:" + v1); System.out.println("Vector v2 Contents:" + v2); System.out.println("Vector v3 Contents:" + v3); System.out.println("Vector v4 Contents:" + v4); } }
Uitvoer:
Bogenoemde program het vier vektore daarin. Die eerste v1 word geskep met 'n verstekkonstruktor. Die tweede Vector v2 word geskep met aanvanklike kapasiteit as 20. Dan word min elemente by v2 gevoeg. Die derde Vector word geskep met 'n aanvanklike kapasiteit van 30 en inkrement10.
Volgende skep ons 'n ArrayList en skep 'n vierde Vector v4 met die ArrayList as sy argument. Laastens vertoon ons die inhoud van elk van hierdie vektore.
Let op die inhoud van die vierde vektor v4. Soos ons ArrayList as sy argument verskaf het, word die inhoud van ArrayList die inhoud van v4.
Voltooi vektorvoorbeeld
Kom ons implementeer nou nog 'n program wat die skepping van vektore sal demonstreer , voeg elemente daarby en vertoon die inhoud daarvan.
import java.util.*; public class Main { public static void main(String args[]) { //Create an empty Vector of even numbers Vector evenVector= new Vector (); //Add elements in the vector evenVector.add(2); evenVector.add(4); evenVector.add(6); evenVector.add(8); evenVector.add(10); evenVector.add(12); evenVector.add(14); evenVector.add(16); //Display the vector System.out.println("Vector evenVector contents: " +evenVector); //delete the first occurence of an element 4 using remove method System.out.println("\nFirstoccurence of element 4 removed: "+evenVector.remove((Integer)4)); //Display the vector System.out.println("\nVector contents after remove operation: " +evenVector); //Remove the element at index 4 & display the vector System.out.println("\nRemove element at index 4: " +evenVector.remove(4)); System.out.println("\nVector contents after remove: " +evenVector); //hashcode for the vector System.out.println("\nHash code of the vector = "+evenVector.hashCode()); //Get the element at index 1 System.out.println("\nElement at index 1 is = "+evenVector.get(1)); } }
Uitvoer:
Kom ons neem nog 'n vektorvoorbeeld. In hierdie program sal ons 'n stringvektor gebruik. Ons manipuleer hierdie vektor deur elemente by te voeg en druk dan sy grootte en kapasiteit.
import java.util.*; public class Main { public static void main(String args[]) { // create a vector with initial capacity = 2 Vector fruits_vec = new Vector(2); //add elements to the vector fruits_vec.addElement("Grapes"); fruits_vec.addElement("Melon"); fruits_vec.addElement("Kiwi"); fruits_vec.addElement("Apple"); //print current size and capacity of the vector System.out.println("Vector Size: "+fruits_vec.size()); System.out.println("Default Vector capacity increment: "+fruits_vec.capacity()); //add more elements to the vector fruits_vec.addElement("Orange"); fruits_vec.addElement("Mango"); fruits_vec.addElement("Fig"); //print current size and capacity again System.out.println("Vector Size after addition: "+fruits_vec.size()); System.out.println("Vector Capacity after increment: "+fruits_vec.capacity()); //print vector elements Enumeration fruits_enum = fruits_vec.elements(); System.out.println("\nVector Elements are:"); while(fruits_enum.hasMoreElements()) System.out.print(fruits_enum.nextElement() + " "); } }
Uitvoer:
Sorteer 'n vektor
Jy kan ook 'n vektor volgens 'n spesifieke volgorde sorteer. Om 'n vektor te sorteer, moet jy die Collections.sort () metode van Java Collections Framework gebruik.
Die volgende voorbeeld wys vektorsortering.
import java.util.*; public class Main { public static void main(String arg[]) { //Create an empty vector Vector oddVector = new Vector(); //Add elements to the vector oddVector.add(1); oddVector.add(11); oddVector.add(7); oddVector.add(3); oddVector.add(5); //print the vector elements System.out.println("Vector elements: "+oddVector); //sort vector using Collections.sort method Collections.sort(oddVector); //print sorted vector System.out.println("Vector elements after sorting: "+oddVector); } }
Uitset:
Bogenoemde program skep 'n vektor van onewe getalle. Deur dan die Collections.sort() metode te gebruik, word die Vektor gesorteer.
2D (Tweedimensionele) Vektor
'n 2D Vektor is 'n Vektor wat elk van sy elemente as 'n Vektor het. Dit kan ook as 'vektor van vektore' bestempel word.
'n Voorbeeld hieronder demonstreer die 2d vektor.
import java.util.*; public class Main { public static void main(String args[]) { //define and initialize a vector Vector inner_vec = new Vector(); inner_vec.add("Software"); inner_vec.add("Testing"); inner_vec.add("Java"); inner_vec.add("Tutorials"); //define another vector and add first vector to it. Vector outer_vec = new Vector(); outer_vec.add(inner_vec); String str; //display the contents of vector of vectors System.out.println("Contents of vector of vectors:"); for(int i=0;iOutput:
In the above program, we have a Vector of four elements. Then, we declare another vector and add the previous vector as an element to the second vector. Note the way the elements of the vector is accessed. Form the for loop, you can conclude that the outer vector’s first element (at index 0) is the first or inner vector.
Thus, in the loop, we keep the index of the outer vector as 0 and loop through the inner vector to display all the elements.
Convert Vector To Array
Let’s consider the following example of converting a Vector to an array. To convert a Vector to an Array, we make use of the ‘toArray’ method of the Vector class.
In the following programming example , we declare a string Vector and add elements to it. Then using the toArray method of the Vector class, we convert the Vector to a String array by passing the string array object as an argument.
import java.util.Vector; public class Main { public static void main(String[] args) { // Create a Vector of String elements Vector color_vector = new Vector(); // Add elements to Vector color_vector.add("Violet"); color_vector.add("Indigo"); color_vector.add("Blue"); color_vector.add("Green"); color_vector.add("Yellow"); color_vector.add("Orange"); color_vector.add("Red"); //Convert Vector to String Array using toArray method String[] colorsArray = color_vector.toArray(new String[color_vector.size()]); //print Array Elements System.out.println("String Array Elements :"); for(String val:colorsArray){ System.out.print(val + " "); } } }Output:
Vector vs Array
Enlisted below are some of the differences between a Vector and an Array.
Vector Array Vector is dynamic and its size grows and shrinks as elements are added or removed. Arrays are static and its size remains fixed once declared. Vectors can store only objects. Arrays can store primitive types as well as objects. It provides a size() method to determine the size. Provides length property to determine the length. No concept dimensions but can be created as a vector of vectors, normally called 2d vector. Arrays support dimensions. Vector is synchronized. The array is not synchronized. Vector is slower than the array. Array is faster. Reserves additional storage when capacity is incremented. Does not reserve any additional storage. Ensures type safety by supporting generics. No generic support. Vector vs ArrayList
This section discusses the difference between Vector and ArrayList in Java.
Vector ArrayList Present since the initial version of Java(JDK 1.0 version). Introduced in Java since JDK 1.2 Vector is a legacy class of Java. ArrayList is a part of the Java Collections Framework. Vector grows double its size when its capacity is reached. ArrayList grows by half the size when its capacity is reached. Vector methods are synchronized. ArrayList is not synchronized. Vector uses Enumerator and Iterator for traversing. ArrayList uses only Iterator. Vector operations are slower. ArrayList is faster. Vector has increment size using which vector size can be increased. ArrayList does not provide increment size. Vector is thread-safe which means using Vector from multiple threads is permitted and is safe. ArrayList is not thread-safe. Frequently Asked Questions
Q #1) What is a Vector in Java?
Answer: In Java, a Vector can be defined as a growable array of objects. Similar to arrays, Vector elements can also be accessed using indices.
Q #2) Is vector ordered in Java?
Answer: Yes. A Vector is ordered and maintains the inserting order for elements.
Q #3) Is Vector thread-safe in Java?
Answer: Yes. In Java the Vector class is thread-safe. As the Vector class is synchronized, it makes it thread-safe i.e. you can use the Vector class from multiple threads and it is safe.
Q #4) Why do we use vector in Java?
Answer: The most important reason for which Vector is used in Java is that a Vector grows and shrinks automatically. They are dynamic because of which they are preferred over arrays.
Q #5) Which is better – ArrayList or vector?
Answer: Performance-wise ArrayList is faster when compared to Vector as Vector is synchronized and makes it slower.
Conclusion
In this tutorial, we started with the Vector data structure in Java. Vectors are almost similar to an array in which the Vector elements are accessed using familiar indices. Vectors are called dynamic array and unlike arrays, the Vector size grows and shrinks automatically.
Vectors also have the capacity and increment features that can be used to create and reserve additional storage for future additions. Vector is a legacy class in java.util package of Java and is synchronized as well as thread-safe.
Thus, we should prefer vectors when we need dynamic size and also while we are working in a multi-threaded environment.