Ovaj vodič objašnjava sve o strukturi vektorskih podataka u Javi s primjerima. Naučit ćete stvarati, inicijale, sortirati & Koristite Java Vector u svojim programima:
Vektor se može definirati kao dinamički niz koji može sam rasti ili se smanjivati, tj. vektor će rasti kada mu se doda više elemenata i smanjit će se kada elementi uklanjaju se iz njega.
Ovo se ponašanje razlikuje od ponašanja nizova koji su statični. Ali slično nizovima, vektorskim elementima može se pristupiti pomoću cjelobrojnih indeksa.
Vektor se može promatrati kao sličan drugoj strukturi podataka dinamičkog niza, ArrayList osim za dvije razlike u nastavku:
- Vektor je sinkroniziran, tj. sve metode u Vektoru označene su kao 'sinkronizirane' i prema tome, kada se metoda pozove, ista se metoda ne može pozvati osim ako prethodni poziv nije završio.
- Klasa vektora ima mnoge metode koje nisu dio okvira zbirki, već njegove naslijeđene metode.
Klasa vektora Java
Klasa vektora je osim paketa “ java.util ” i implementira sučelje popisa. Vektor je niz objekata ili vektor objekata.
Deklaracija klase klase Vektor data je u nastavku:
public class Vector extends Object implements List, Cloneable, Serializable
Kao što je gore prikazano, klasa Vektor proširuje se na “ java.lang.object ” i implementira sučelja List, Cloneable i Serializable.
Kako stvoriti vektor u Javi?
Možetekreirajte vektorski objekt pomoću bilo koje od sljedećih metoda konstruktora vektora.
Prototip konstruktora | Opis |
---|---|
vector() | Ovo je zadani konstruktor klase Vector. Stvara prazan vektor veličine 10. |
vector(int initialCapacity) | Ovaj preopterećeni konstruktor konstruira prazan vektorski objekt s kapacitetom = initialCapacity. |
vector(int initialCapacity, int capacityIncrement) | Ova metoda konstruktora stvara prazan objekt Vector s navedenim početnim kapacitetom i kapacitetomincrementom. |
Vektor( zbirka c) | Vektorski objekt kreiran je s početnim elementima iz navedene kolekcije c. |
Pogledajmo svaki od konstruktora za inicijalizaciju Vector objekata.
Inicijaliziraj Vector
(i) Vector()
Ovo je zadani konstruktor klase Vector. Kada pozovete ovaj konstruktor, kreira se vektorski objekt zadane veličine 10.
Opća sintaksa ove metode je:
Vektorski objekt = new Vector();
Na primjer,
Vector vec1 = new Vector ();
Gornja izjava stvara novi vektor 'vec1' veličine 10.
(ii) Vektor(int initialCapacity)
Preopterećeni konstruktor klase Vector prihvaća 'initialCapacity' kao argument. Ovaj konstruktor stvara vektorobjekt s navedenim kapacitetom.
Opća sintaksa metode je:
Vektorski objekt = novi vektor (početni kapacitet);
Na primjer,
Vector vec1 = new Vector (10);
Gornja programska izjava stvorit će vektorski objekt 'vec1' s kapacitetom od 10, tj. ovaj vektor može pohraniti do 10 elementi.
(iii) Vektor(int initialCapacity, int capacityIncrement)
Ovo je još jedan preopterećeni konstruktor klase Vektor i stvara Vektorski objekt s navedenim početnim kapacitet i inkrement za kapacitet.
Opća sintaksa za ovu metodu je:
Vektorski objekt = novi vektor (početni kapacitet, kapacitetinkrement);
Na primjer,
Vector vec1 = new Vector(5,10);
U gornjoj izjavi, početni kapacitet vektora je 5, a inkrement je 10. To znači da kada 6. element je umetnut u vektor, kapacitet vektora će se povećati na 15 (5 + 10). Slično, kada se umetne 16. element, vektorski kapacitet vektora bit će proširen na 25 (15 +10).
(iv) Vektor (kolekcija c)
Posljednji preopterećeni konstruktor klase Vektor uzima unaprijed definiranu kolekciju kao argument i stvara Vektor sa svim elementima iz te kolekcije kao svojim elementima.
Opća sintaksa je:
Vektorski objekt = novi vektor (kolekcija c);
Na primjer,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
Thegornja izjava stvorit će vektor 'vec1' s početnim elementima kao {1,2,3,4, 5}.
Imanje svih ovih opisa na umu omogućit će nam implementaciju vektorskog programa kako bismo bolje razumjeli ove konstruktore.
Vektorske metode u Javi
Sljedeće su metode koje podržava klasa Vector u Javi.
Naziv metode | Prototip | Opis |
---|---|---|
add | Boolean add(E e) | Dodaje dati element na kraj vektora. |
Void add(int index, E element) | Dodaj element vektoru na navedenom indeksu. | |
addAll | Boolean addAll(Collection c) | Dodaje sve elemente iz dane kolekcije na kraj vektora. |
Boolean addAll(int index, Collection c) | Dodaje sve elemente u navedenoj kolekciji na navedenom indeksu. | |
addElement | void addElement(E obj) | Dodaje navedeni element na kraj vektora povećanjem veličine vektora. |
Kapacitet | Int kapacitet() | Vraća trenutni kapacitet od vektor. |
Clear | Void clear() | Briše vektor od njegovih elemenata. |
Clone | Object clone() | Klonira vektor. |
Sadrži | Boolean contains(Object o) | Provjerava sadrži li vektornavedeni element. |
containsAll | Boolean containsAll(Collection c) | Provjerava sadrži li vektor sve elemente prisutne u data kolekcija. |
copyInto | Void copyInto(Object[] anArray) | Kopira vektorske elemente u dani niz. |
ElementAt | E ElementAt(int indeks) | Vraća element vektora na navedenom indeksu. |
Elements | Enumerationelements() | Vraća numerirane komponente za vektor. |
secureCapacity | Void secureCapacity(int minCapacity) | Povećava kapacitet vektora kako bi zadovoljio navedeni minimalni kapacitet. |
Naziv metode | Prototip | Opis |
---|---|---|
Equals | Boolean equals(Object o) | Uspoređuje trenutni vektor s navedenim vektorom kako bi provjerio jesu li jednaki. |
firstElement | E firstElement() | Vraća prvi element vektora na indeksu 0. |
Get | E get(int index) | Vraća element u vektoru na navedenom indeksu. |
hashCode | int hashCode() | Vraća vrijednost hash koda za vektor. |
indexOf | int indexOf(Object o) | pronalazi indeks prvog pojavljivanja zadanog elementa u vektoru; -1 akoelement nije prisutan u vektoru. |
int indexOf(Object o, int index) | Traži vektor iz zadanog indeksa u smjeru naprijed za navedeni element; vraća indeks ako je element pronađen inače -1 ako element nije pronađen. | |
insertElementAt | Void insertElementAt(E obj, int index) | Umeće dani objekt u vektor na danom indeksu. |
isEmpty | Boolean isEmpty() | Provjerava je li vektor prazan. |
Iterator | Iteratoriterator() | Vraća iterator koji se koristi za prelazi preko elemenata vektora. |
lastElement | E lastElement() | Vraća zadnji element vektora . |
lastIndexOf | Int lastIndexOf(Object o) | Traži vektor za zadnje pojavljivanje zadanog elementa i vraća indeks, ili vraća -1 element nije pronađen. |
Int lastIndexOf(Object o, int index) | Počinje traženje posljednjeg pojavljivanja zadanog elementa od dati indeks unatrag. Vraća indeks ako je element pronađen inače vraća -1. | |
listIterator | ListIteratorlistIterator() | Vraća iterator liste preko vektorskih elemenata. |
ListIteratorlistIterator(int index) | Vraća popis iterator preko vektorskih elemenata počevši od zadanogindeks. |
Naziv metode | Prototip | Opis |
---|---|---|
Ukloni | E ukloni(indeks) | Briše element na danom indeksu iz vektora. |
Boolean remove(Object o) | Briše prvo pojavljivanje zadanog elementa iz vektora. Ako element nije prisutan, ništa se ne događa vektoru | |
removeAll | Boolean removeAll(Collection c) | Briše sve elemente iz vektora koji prisutni su u danoj kolekciji. |
void removeAll Elements() | Briše sve vektorske elemente čime se smanjuje na veličinu nula. | |
removeElement | Boolean removeElement(Object obj) | Uklanja prvo pojavljivanje zadanog elementa iz vektora. |
void removeElementAt(int index) | Briše element na danom indeksu. | |
removeRange | protected void removeRange(int fromIndex, int toIndex) | Briše sve elemente iz vektora u zadanom rasponu od fromIndex (uključivo), doIndex (isključivo). |
retainAll | Boolean retainAll(Collection c) | Za razliku od 'removeAll', metoda retainAll zadržava elemente u vektoru koji odgovaraju elementima u navedenoj zbirci. |
set | E set(int index , E element) | Postavlja vrijednost na danom indeksu s novim elementomomogućeno. |
Void set ElementAt(E obj, int index) | Postavlja zadane elemente na zadani indeks. | |
setSize | Void setSize(int newSize) | Postavlja zadanu veličinu za ovaj vektor. |
Veličina | int size() | Vraća broj elemenata u ovom vektoru ili duljinu vektora. |
subList | ListsubList(intfromIndex, inttoIndex) | Vraća pogled ili podlistu vektora u rasponu od fromIndex do Index. |
toArray | Object[] toArray () | Pretvara zadani vektor u niz koji sadrži sve elemente vektora zadanim redoslijedom. |
T[] u Niz(T[] a) | Vraća niz navedenog tipa koji sadrži sve vektorske elemente. | |
toString | String toString() | Vraća nizovnu reprezentaciju vektora. |
trimToSize | void trimToSize() | Skraćuje vektor kako bi se prilagodio trenutnoj veličini. |
Vektorska implementacija
Sljedeći Java program demonstrira korištenje svih gore opisanih metoda konstruktora.
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); } }
Izlaz:
Gornji program sadrži četiri vektora. Prva v1 je kreirana sa zadanim konstruktorom. Drugi Vektor v2 je kreiran s početnim kapacitetom od 20. Zatim se nekoliko elemenata dodaje u v2. Treći Vektor je kreiran s početnim kapacitetom od 30 i povećanjem10.
Zatim, kreiramo ArrayList i kreiramo četvrti Vector v4 s ArrayListom kao argumentom. Na kraju, prikazujemo sadržaj svakog od ovih vektora.
Obratite pažnju na sadržaj četvrtog vektora v4. Budući da smo naveli ArrayList kao njegov argument, sadržaj ArrayList postaje sadržaj v4.
Potpuni primjer vektora
A sada implementirajmo još jedan program koji će demonstrirati stvaranje vektora , dodajući mu elemente i prikazujući njegov sadržaj.
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)); } }
Izlaz:
Uzmimo još jedan primjer vektora. U ovom programu ćemo koristiti vektor niza . Ovim vektorom manipuliramo dodavanjem elemenata, a zatim ispisujemo njegovu veličinu i kapacitet.
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() + " "); } }
Izlaz:
Razvrstaj vektor
Također možete sortirati vektor prema određenom redoslijedu. Za sortiranje vektora, morate koristiti metodu Collections.sort () Java Collections Frameworka.
Sljedeći primjer prikazuje sortiranje vektora.
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); } }
Izlaz:
Gornji program stvara vektor neparnih brojeva. Zatim se pomoću metode Collections.sort() vektor sortira.
2D (dvodimenzionalni) vektor
2d vektor je vektor koji ima svaki svoj element kao vektor. Također se može nazvati 'vektorom vektora'.
Primjer ispod pokazuje 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.