Ovaj vodič objašnjava sve o strukturi vektorskih podataka u Javi s primjerima. Naučit ćete kreirati, inicijalizirati, sortirati & Koristite Java vektor u svojim programima:
Vektor se može definirati kao dinamički niz koji može samostalno rasti ili se smanjivati, tj. vektor će rasti kada mu se doda više elemenata i smanjit će se kada elementi su uklonjeni iz njega.
Ovo ponašanje se razlikuje od ponašanja nizova koji su statični. Ali slično nizovima, vektorskim elementima se može pristupiti korištenjem integer indeksa.
Vektor se može posmatrati kao sličan drugoj strukturi podataka dinamičkog niza, ArrayList osim za dvije razlike u nastavku:
- Vektor je sinkroniziran, tj. sve metode u Vectoru su označene kao 'sinhronizirane' i stoga jednom kada se metoda pozove, ista metoda se ne može pozvati osim ako prethodni poziv nije
- Vektorska klasa ima mnogo metoda koje nisu dio okvira kolekcija, već njene naslijeđene metode.
Java vektorska klasa
Vektorska klasa je osim paketa “ java.util ” i implementira List interfejs. Vektor je niz objekata ili vektor objekata.
Deklaracija klase vektorske klase je data ispod:
public class Vector extends Object implements List, Cloneable, Serializable
Kao što je prikazano gore, Vector klasa se proširuje “ java.lang.object ” i implementira sučelja za listu, kloniranje i serijalizaciju.
Kako kreirati vektor u Javi?
Možeškreirajte Vector objekt koristeći bilo koju od sljedećih metoda Vector konstruktora.
Prototip konstruktora | Opis |
---|---|
vector() | Ovo je zadani konstruktor klase Vector. Kreira prazan vektor veličine 10. |
vector(int initialCapacity) | Ovaj preopterećeni konstruktor konstruira prazan Vector objekt s kapacitetom = initialCapacity. |
vector(int initialCapacity, int capacityIncrement) | Ova konstruktorska metoda kreira prazan Vector objekt sa specificiranim početnim kapacitetom i kapacitetom. |
Vector( Collection c) | Vektorski objekat se kreira sa početnim elementima iz određene kolekcije c. |
Pogledajmo svaki od konstruktora za inicijalizaciju vektorskih objekata.
Inicijaliziraj vektor
(i) Vector()
Ovo je podrazumevani konstruktor klase Vector. Kada pozovete ovaj konstruktor, kreira se Vector objekat podrazumevane veličine 10.
Opšta sintaksa ove metode je:
Vektorski objekat = new Vector();
Na primjer,
Vector vec1 = new Vector ();
Navedena izjava kreira novi vektor 'vec1' veličine 10.
(ii) Vector(int initialCapacity)
Preopterećeni konstruktor klase Vector prihvata 'initialCapacity' kao argument. Ovaj konstruktor kreira Vectorobjekat sa navedenim kapacitetom.
Opća sintaksa metode je:
Vektorski objekat = novi vektor (početni kapacitet);
Na primjer,
Vector vec1 = new Vector (10);
Gorenja programska izjava će kreirati vektorski objekat 'vec1' kapaciteta 10, tj. ovaj vektor može pohraniti do 10 elementi.
(iii) Vector(int initialCapacity, int kapacitetIncrement)
Ovo je još jedan preopterećeni konstruktor klase Vector i kreira Vector objekat sa specificiranim početnim kapacitet i inkrement za kapacitet.
Opća sintaksa za ovu metodu je:
Vektorski objekat = novi vektor (početniCapacity, kapacitetInkrement);
Na primjer,
Vector vec1 = new Vector(5,10);
U gornjoj izjavi, početni kapacitet vektora je 5, a prirast je 10. To znači 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 će se proširiti na 25 (15 +10).
(iv) Vektor (kolekcija c)
Posljednji preopterećeni konstruktor klase Vector uzima unaprijed definiranu kolekciju kao argument i kreira Vector sa svim elementima iz ove kolekcije kao njegovim 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 će kreirati Vector 'vec1' sa početnim elementima kao {1,2,3,4, 5}.
Imajući sve ove opise na umu, omogućit ćemo implementaciju Vector programa kako bismo bolje razumjeli ove konstruktore.
Vektorske metode u Javi
Sljedeće su metode koje podržava Vector klasa 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 specificiranom indeksu. | |
addAll | Boolean addAll(kolekcija c) | Dodaje sve elemente iz date 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 vektor. |
Clear | Void clear() | Briše vektor njegovih elemenata. |
Clone | Object clone() | Klonira vektor. |
Sadrži | Boolean sadrži(Objekat o) | Provjerava sadrži li vektorspecificirani element. |
containsAll | Boolean containsAll(Collection c) | Provjerava da li vektor sadrži sve elemente prisutne u data kolekcija. |
copyInto | Void copyInto(Object[] anArray) | Kopira vektorske elemente u dati niz. |
ElementAt | E ElementAt(int index) | Vraća vektorski element sa specificiranim indeksom. |
Elementi | Enumerationelements() | Vraća nabrojane komponente za vektor. |
osiguratiCapacity | Void osiguranjeCapacity(int minCapacity) | Povećava kapacitet vektora kako bi zadovoljio minimalni specificirani kapacitet. |
Naziv metode | Prototip | Opis |
---|---|---|
Jednako | Boolean jednak(Objekat o) | Upoređuje trenutni vektor sa specificiranim vektorom da provjeri da li su 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 Vector. |
indexOf | int indexOf(Object o) | pronalazi indeks prvog pojavljivanja datog elementa u vektoru; -1 akoelement nije prisutan u vektoru. |
int indexOf(Object o, int index) | Traži vektor iz datog indeksa u smjeru naprijed za navedeni element; vraća indeks ako je element pronađen else -1 ako element nije pronađen. | |
insertElementAt | Void insertElementAt(E obj, int index) | Umeće dati objekat u vektor na datom indeksu. |
isEmpty | Boolean isEmpty() | Provjerava da li je 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 posljednje pojavljivanje datog elementa i vraća indeks, ili vraća -1 element nije pronađen. |
Int lastIndexOf(Object o, int index) | Počinje tražiti posljednje pojavljivanje datog 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 iterator liste preko vektorskih elemenata počevši od datogindeks. |
Naziv metode | Prototip | Opis |
---|---|---|
Ukloni | E remove(int index) | Briše element na datom indeksu iz vektora. |
Boolean remove(Object o) | Briše prvo pojavljivanje datog 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 su prisutni u datoj kolekciji. |
void removeAll Elements() | Briše sve vektorske elemente čime se smanjuje na veličinu nula. | |
removeElement | Boolean removeElement(Object obj) | Uklanja prvo pojavljivanje datog elementa iz vektora. |
void removeElementAt(int index) | Briše element na datom indeksu. | |
removeRange | protected void removeRange(int fromIndex, int toIndex) | Briše sve elemente iz vektora u datom rasponu od fromIndex (uključivo), totoIndex (isključivo). |
retainAll | Boolean retainAll(Collection c) | Za razliku od 'removeAll', metoda retainAll zadržava elemente u vektoru koji se podudaraju s elementima u navedenoj kolekciji. |
set | E set(int index , E element) | Postavlja vrijednost na datom indeksu s novim elementompredviđeno. |
Void set ElementAt(E obj, int index) | Postavlja date elemente na datom indeksu. | |
setSize | Void setSize(int newSize) | Postavlja datu veličinu za ovaj vektor. |
Size | int size() | Vraća broj elemenata u ovom vektoru ili dužinu vektora. |
subList | ListsubList(intfromIndex, inttoIndex) | Vraća pogled ili podlistu vektora u rasponu od odIndex do toIndex. |
toArray | Object[] toArray () | Pretvara dati vektor u niz koji sadrži sve vektorske elemente u datom redoslijedu. |
T[] toArray(T[] a) | Vraća niz specificiranog tipa koji sadrži sve vektorske elemente. | |
toString | String toString() | Vraća string prikaz vektora. |
trimToSize | void trimToSize() | Obrezuje vektor kako bi se prilagodio trenutnoj veličini. |
Implementacija vektora
Sljedeći Java program pokazuje korištenje svih metoda konstruktora opisanih gore.
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:
Navedeni program ima četiri vektora u sebi. Prvi v1 je kreiran sa zadanim konstruktorom. Drugi Vector v2 je kreiran sa početnim kapacitetom od 20. Zatim se nekoliko elemenata dodaje u v2. Treći vektor je kreiran sa početnim kapacitetom od 30 i inkrementom10.
Dalje, kreiramo ArrayList i kreiramo četvrti Vector v4 sa ArrayList kao argumentom. Konačno, prikazujemo sadržaj svakog od ovih vektora.
Obratite pažnju na sadržaj četvrtog vektora v4. Kako smo naveli ArrayList kao argument, sadržaj ArrayList postaje sadržaj v4.
Kompletan primjer vektora
Sada implementirajmo još jedan program koji će demonstrirati kreiranje 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 vektorski primjer. U ovom programu ćemo koristiti string vektor . 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:
Sortiraj vektor
Također možete sortirati vektor prema određenom redoslijedu. Za sortiranje vektora, morate koristiti Collections.sort () metodu Java Collections Framework-a.
Sljedeći primjer pokazuje 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:
Navedeni program kreira vektor neparnih brojeva. Zatim se pomoću metode Collections.sort() sortira vektor.
2D (dvodimenzionalni) vektor
2d vektor je vektor koji svaki od svojih elemenata ima kao vektor. Također se može nazvati 'Vektor 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.