Ky tutorial shpjegon gjithçka rreth strukturës së të dhënave vektoriale në Java me shembuj. Do të mësoni të Krijoni, Initial, Rendit & Përdorni një vektor Java në programet tuaja:
Një vektor mund të përkufizohet si një grup dinamik që mund të rritet ose tkurret vetë, d.m.th. vektori do të rritet kur i shtohen më shumë elementë dhe do të tkurret kur elementet janë hequr prej tij.
Kjo sjellje është ndryshe nga ajo e vargjeve që janë statike. Por ngjashëm me vargjet, elementet vektoriale mund të aksesohen duke përdorur indekset me numra të plotë.
Një vektor mund të shihet si i ngjashëm me një strukturë tjetër të të dhënave të grupit dinamik, ArrayList me përjashtim të dy dallime më poshtë:
- Vektori është i sinkronizuar, d.m.th., të gjitha metodat në Vektor shënohen 'të sinkronizuara' dhe kështu pasi thirret një metodë, e njëjta metodë nuk mund të thirret nëse thirrja e mëparshme nuk ka përfundoi.
- Klasa vektoriale ka shumë metoda që nuk janë pjesë e kornizës së koleksioneve, por metodat e saj të trashëguara.
Java Vector Class
Një klasë Vector është përveç paketës " java.util " dhe implementon ndërfaqen List. Një vektor është një grup objektesh ose vektor objektesh.
Një deklaratë klase e klasës Vector jepet më poshtë:
public class Vector extends Object implements List, Cloneable, Serializable
Siç tregohet më sipër, një klasë Vector shtrihet " java.lang.object ” dhe zbaton ndërfaqet List, Cloneable dhe Serializable.
Si të krijoni një vektor në Java?
Ju mundenikrijoni një objekt vektori duke përdorur ndonjë nga metodat e mëposhtme të konstruktorit të vektorit.
Prototipi i konstruktorit | Përshkrimi |
---|---|
vector() | Ky është konstruktori i paracaktuar i klasës Vector. Krijon një vektor bosh me madhësi 10. |
vektor(int fillestarCapacity) | Ky konstruktor i mbingarkuar ndërton një objekt Vector bosh me kapacitet = Kapaciteti fillestar. |
vektori(kapaciteti iniciativ, rritja e kapacitetit int) | Kjo metodë konstruktori krijon një objekt vektori bosh me kapacitet fillestar të specifikuar dhe rritje të kapacitetit. |
Vektor( Koleksioni c) | Krijohet një objekt vektori me elementet fillestare nga koleksioni i specifikuar c. |
Le të shikojmë secilin prej konstruktorëve për të inicializuar objektet vektoriale.
Initialize Vector
(i) Vector()
Ky është konstruktori i paracaktuar i klasës Vector. Kur thirrni këtë konstruktor, krijohet një objekt Vector me madhësi të paracaktuar 10.
Sintaksa e përgjithshme e kësaj metode është:
Objekti vektor = new Vector();
Për shembull,
Vector vec1 = new Vector ();
Deklarata e mësipërme krijon një Vektor të ri 'vec1' me madhësi 10.
(ii) Vektori(kapaciteti fillestar int)
Konstruktori i mbingarkuar i klasës Vector pranon 'Kapacitetin fillestar' si argument. Ky konstruktor krijon një Vektorobjekt me kapacitetin e specifikuar.
Sintaksa e përgjithshme e metodës është:
Objekti vektor = vektor i ri (kapaciteti fillestar);
Për shembull,
Vector vec1 = new Vector (10);
Deklarata e mësipërme e programimit do të krijojë një objekt Vector 'vec1' me kapacitet 10, d.m.th. ky Vektor mund të ruajë deri në 10 elementet.
(iii) Vektori(intiticialCapacity, int CapacityIncrement)
Ky është një tjetër konstruktor i mbingarkuar i klasës Vector dhe krijon një objekt Vector me inicialen e specifikuar kapaciteti dhe rritja për kapacitetin.
Sintaksa e përgjithshme për këtë metodë është:
Objekti vektor = vektor i ri (Kapaciteti fillestar, rritja e kapacitetit);
Për shembull,
Vector vec1 = new Vector(5,10);
Në deklaratën e mësipërme, kapaciteti fillestar i Vektorit është 5 dhe rritja është 10. Kjo do të thotë kur Elementi i 6-të futet në vektor, kapaciteti i vektorit do të rritet në 15 (5 + 10). Në mënyrë të ngjashme, kur futet elementi i 16-të, kapaciteti vektorial i Vektorit do të zgjerohet në 25 (15 +10).
(iv) Vektori(Koleksioni c)
Konstruktori i fundit i mbingarkuar i klasës Vector merr një koleksion të paracaktuar si argument dhe krijon një Vektor me të gjithë elementët nga ky koleksion si elementë të tij.
Sintaksa e përgjithshme është:
Objekti vektor = vektor i ri (koleksioni c);
Për shembull,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
TëDeklarata e mësipërme do të krijojë një vektor 'vec1' me elementë fillestarë si {1,2,3,4, 5}.
Duke mbajtur parasysh të gjitha këto përshkrime do të na lejojë të zbatojmë një program Vector për t'i kuptuar më mirë këta konstruktorë.
Metodat e vektorit në Java
Më poshtë janë metodat që mbështeten nga klasa Vector në Java.
Emri i metodës | Prototipi | Përshkrimi |
---|---|---|
add | Shto Boolean(E e) | Shton elementin e dhënë në fund të vektorit. |
Vid add(int index, Elementi E) | Shto element në vektor në indeksin e specifikuar. | |
addAll | Boolean addAll(Koleksioni c) | Shton të gjithë elementët nga koleksioni i dhënë në fund të vektorit. |
Boolean addAll(int index, Collection c) | Shton të gjithë elementët në koleksionin e specifikuar në indeksin e specifikuar. | |
addElement | void addElement(E obj) | Shton elementin e specifikuar në fundi i vektorit duke rritur madhësinë e vektorit. |
Kapaciteti | Kapaciteti int() | Kthen kapacitetin aktual të vektori. |
Clear | Void clear() | Pastron vektorin nga elementet e tij. |
Klon | Klon i objektit() | Klon vektorin. |
Përmban | Boolean përmban(Objekt o) | Kontrollon nëse vektori përmbanelementi i specifikuar. |
përmban të gjitha | Boolean përmban të gjitha(Koleksioni c) | Kontrollon nëse vektori përmban të gjithë elementët e pranishëm në koleksioni i dhënë. |
copyInto | Void copyInto(Object[] anArray) | Kopjon elementet vektoriale në grupin e dhënë. |
ElementAt | E ElementAt(int index) | Kthen elementin vektor në indeksin e specifikuar. |
Elementet | Enumerationelements() | Kthen komponentët e numëruar për vektorin. |
sureCapacity | E pavlefshme sureCapacity(int minCapacity) | Rrit kapacitetin e vektorit për të përmbushur kapacitetin minimal të specifikuar. |
Emri i metodës | Prototipi | Përshkrimi |
---|---|---|
E barabartë | Boli është e barabartë(Objekt o) | Krahason vektorin aktual me vektorin e specifikuar për të kontrolluar nëse janë të barabartë. |
firstElement | E firstElement() | Kthon elementin e parë të vektorit në indeksin 0. |
Merr | E get(int index) | Kthen elementin në vektor në indeksin e specifikuar. |
hashCode | int hashCode() | Kthen vlerën e kodit hash për Vektorin. |
indeksiOf | int indexOf(Object o) | gjen indeksin e paraqitjes së parë të elementit të dhënë në vektor; -1 nëseelementi nuk është i pranishëm në vektor. |
int indexOf(Object o, int index) | Kërkon vektorin nga indeksi i dhënë në drejtimin përpara për elementin e specifikuar;kthehet indeks nëse gjendet elementi tjetër -1 nëse elementi nuk gjendet. | |
insertElementAt | Void insertElementAt(E obj, int index) | Fut objektin e dhënë në vektor në indeksin e dhënë. |
isEmpty | Boolean isEmpty() | Kontrollon nëse vektori është bosh. |
Iterator | Iteratoriterator() | Kthen një përsëritës që përdoret për të kaloj mbi elementet e vektorit. |
lastElement | E lastElement() | Kthen elementin e fundit të vektorit . |
lastIndexOf | Int lastIndexOf(Object o) | Kërkon vektorin për ndodhjen e fundit të elementit të dhënë dhe kthen indeksi, ose kthen -1 elementin nuk gjendet. |
Int lastIndexOf(Object o, int index) | Fillon kërkimin për ndodhjen e fundit të elementit të dhënë nga indeksi i dhënë mbrapsht. Kthen indeksin nëse gjendet elementi tjetër kthen -1. | |
listIterator | ListIteratorlistIterator() | Kthen një përsëritës të listës mbi elementet vektoriale. |
ListIteratorlistIterator(int index) | Kthen një përsëritës të listës mbi elementet vektoriale duke filluar nga ajo e dhënëindeksi. |
Emri i metodës | Prototipi | Përshkrim |
---|---|---|
Hiq | E remove(int index) | Fshin elementin në indeksin e dhënë nga vektori. |
Heq Boolean(Objekt o) | Fshin shfaqjen e parë të elementit të dhënë nga vektori. Nëse elementi nuk është i pranishëm, asgjë nuk i ndodh vektorit | |
removeAll | Boolean removeAll(Collection c) | Fshin të gjithë elementët nga vektori që janë të pranishme në koleksionin e dhënë. |
void removeAll Elements() | Fshin të gjithë elementët vektorial duke e reduktuar atë në madhësinë zero. | |
removeElement | RemoveElement Boolean(Object obj) | Heq ndodhjen e parë të elementit të dhënë nga vektori. |
void removeElementAt(int index) | Fshin elementin në indeksin e dhënë. | |
removeRange | protected void removeRange(int fromIndex, int toIndex) | Fshin të gjithë elementët nga vektori në diapazonin e dhënë nga nga Index (përfshirë), totoIndex (ekskluzive). |
retainAll | RetainAll RetainAll(Koleksioni c) | Në ndryshim nga "removeAll", metoda RetainAll ruan elemente në Vektor që përputhen me elementet në Koleksionin e specifikuar. |
set | Set E(indeks int , Elementi) | Cakton vlerën në indeksin e dhënë me elementin e riofrohet. |
Sellë e pavlefshme ElementAt(E obj, int index) | Vendos elementet e dhëna në indeksin e dhënë. | |
setSize | Void setSize(int newSize) | Cakton madhësinë e dhënë për këtë vektor. |
Madhësia | int size() | Kthon numrin e elementeve në këtë vektor ose gjatësinë e vektorit. |
nënlista | ListsubList(intfromIndex, inttoIndex) | Kthen një pamje ose nënlistë të vektorit që varion nga nga Index në tekIndex. |
toArray | Object[] toArray () | Konverton vektorin e dhënë në një grup që përmban të gjithë elementët vektorial në rendin e caktuar. |
T[] toArray(T[] a) | Kthen një grup të tipit të specifikuar që përmban të gjithë elementët vektorial. | |
toString | String toString() | Kthen një paraqitje të vargut të vektorit. |
trimToSize | void trimToSize() | Prit vektorin për të përshtatur madhësinë aktuale. |
Zbatimi i vektorit
Programi i mëposhtëm Java demonstron përdorimin e të gjitha metodave të konstruktorit të përshkruara më sipër.
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); } }
Output:
Programi i mësipërm ka katër vektorë në të. V1 i parë krijohet me një konstruktor të paracaktuar. Vektori i dytë v2 krijohet me kapacitet fillestar 20. Më pas i shtohen pak elementë v2. Vektori i tretë është krijuar me një kapacitet fillestar prej 30 dhe në rritje10.
Më pas, krijojmë një ArrayList dhe krijojmë një Vector të katërt v4 me ArrayList si argument. Së fundi, ne shfaqim përmbajtjen e secilit prej këtyre Vektorëve.
Vini re përmbajtjen e Vektorit të katërt v4. Siç kemi dhënë ArrayList si argument të tij, përmbajtja e ArrayList bëhet përmbajtja e v4.
Shembull Vektori i plotë
Tani le të zbatojmë një program tjetër që do të demonstrojë krijimin e vektorëve , duke shtuar elemente në të dhe duke shfaqur përmbajtjen e tij.
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)); } }
Output:
Le të marrim një shembull tjetër vektori. Në këtë program, ne do të përdorim një vektor vargu . Ne e manipulojmë këtë vektor duke shtuar elementë dhe më pas shtypim madhësinë dhe kapacitetin e tij.
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() + " "); } }
Output:
Rendit një vektor
Ju gjithashtu mund të renditni një vektor sipas një rendi specifik. Për të renditur një vektor, duhet të përdorni metodën Collections.sort () të Kornizës së Koleksioneve Java.
Shembulli i mëposhtëm tregon renditjen e vektorit.
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); } }
Prodhimi:
Programi i mësipërm krijon një Vektor të numrave tek. Më pas duke përdorur metodën Collections.sort(), renditet Vektori.
Vektori 2D (dydimensional)
Një vektor 2d është një vektor që ka secilin prej elementeve të tij si Vektor. Mund të cilësohet gjithashtu si "Vektor i vektorëve".
Një shembull më poshtë tregon Vektorin 2d.
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.