Tutorial Ini Menjelaskan semua tentang Struktur Data Vektor dalam Java Dengan Contoh. Anda akan belajar Cipta, Permulaan, Isih & Gunakan Vektor Java dalam Program anda:
Vektor boleh ditakrifkan sebagai tatasusunan dinamik yang boleh berkembang atau mengecut sendiri iaitu vektor akan berkembang apabila lebih banyak elemen ditambah kepadanya dan akan mengecut apabila elemen dialih keluar daripadanya.
Tingkah laku ini tidak seperti tatasusunan yang statik. Tetapi sama dengan tatasusunan, elemen vektor boleh diakses menggunakan indeks integer.
Vektor boleh dilihat sebagai serupa dengan struktur data tatasusunan dinamik yang lain, ArrayList kecuali untuk dua perbezaan di bawah:
- Vektor disegerakkan iaitu semua kaedah dalam Vektor ditandakan 'disegerakkan' dan oleh itu sebaik sahaja kaedah digunakan, kaedah yang sama tidak boleh digunakan melainkan panggilan sebelumnya mempunyai tamat.
- Kelas vektor mempunyai banyak kaedah yang bukan sebahagian daripada rangka kerja koleksi tetapi kaedah warisannya.
Kelas Vektor Java
Kelas Vektor ialah selain daripada pakej “ java.util ” dan melaksanakan antara muka Senarai. Vektor ialah tatasusunan objek atau vektor objek.
Pengisytiharan kelas bagi kelas Vektor diberikan di bawah:
public class Vector extends Object implements List, Cloneable, Serializable
Seperti yang ditunjukkan di atas, kelas Vektor memanjangkan “ java.lang.object ” dan melaksanakan antara muka Senarai, Boleh Diklon dan Boleh Bersiri.
Bagaimana Untuk Mencipta Vektor Dalam Java?
Anda bolehcipta objek Vektor menggunakan mana-mana kaedah pembina Vektor berikut.
Prototaip Pembina | Penerangan |
---|---|
vector() | Ini ialah pembina lalai bagi kelas Vector. Ia mencipta vektor kosong dengan saiz 10. |
vector(int initialCapacity) | Pembina yang terlebih beban ini membina objek Vector kosong dengan kapasiti = initialCapacity. |
vector(int initialCapacity, int capacityIncrement) | Kaedah pembina ini mencipta objek Vector kosong dengan initialCapacity dan capacityIncrement yang ditentukan. |
Vektor( Koleksi c) | Objek Vektor dicipta dengan elemen awal daripada koleksi tertentu c. |
Mari kita lihat setiap pembina untuk memulakan objek Vektor.
Mulakan Vektor
(i) Vektor()
Ini ialah pembina lalai bagi kelas Vektor. Apabila anda memanggil pembina ini, objek Vektor saiz lalai 10 dicipta.
Sintaks umum kaedah ini ialah:
Objek vektor = new Vector();
Sebagai Contoh,
Vector vec1 = new Vector ();
Pernyataan di atas mencipta Vektor baharu 'vec1' dengan saiz 10.
(ii) Vector(int initialCapacity)
Pembina terlebih beban bagi kelas Vector menerima 'initialCapacity' sebagai hujah. Pembina ini mencipta Vektorobjek dengan kapasiti yang ditentukan.
Sintaks umum kaedah ialah:
Objek vektor = Vektor baharu (initialCapacity);
Sebagai contoh,
Vector vec1 = new Vector (10);
Pernyataan pengaturcaraan di atas akan mencipta objek Vektor 'vec1' dengan kapasiti 10 iaitu Vektor ini boleh menyimpan sehingga 10 elemen.
(iii) Vector(int initialCapacity, int capacityIncrement)
Ini adalah satu lagi pembina terlampau beban kelas Vector dan ia mencipta objek Vector dengan awalan yang ditentukan kapasiti dan kenaikan untuk kapasiti.
Sintaks umum untuk kaedah ini ialah:
Objek vektor = Vektor baharu (initialCapacity, capacityIncrement);
Sebagai Contoh,
Vector vec1 = new Vector(5,10);
Dalam pernyataan di atas, kapasiti awal Vektor ialah 5 dan kenaikan ialah 10. Ini bermakna apabila Elemen ke-6 dimasukkan ke dalam vektor, kapasiti vektor akan ditambah kepada 15 (5 + 10). Begitu juga, apabila elemen ke-16 dimasukkan, kapasiti vektor Vektor akan dilanjutkan kepada 25 (15 +10).
(iv) Vektor(Koleksi c)
Pembina terlampau beban terakhir bagi kelas Vector mengambil koleksi yang dipratentukan sebagai hujah dan mencipta Vektor dengan semua elemen daripada koleksi ini sebagai elemennya.
Sintaks umum ialah:
Objek vektor = Vektor baharu (Koleksi c);
Sebagai Contoh,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
Thepernyataan di atas akan mencipta Vektor 'vec1' dengan elemen awal sebagai {1,2,3,4, 5}.
Mengingat semua penerangan ini akan membolehkan kami melaksanakan program Vektor untuk memahami pembina ini dengan lebih baik.
Kaedah Vektor Dalam Java
Berikut ialah kaedah yang disokong oleh kelas Vektor dalam Java.
Nama Kaedah | Prototaip | Penerangan |
---|---|---|
tambah | Tambah Boolean(E e) | Menambah elemen yang diberikan pada penghujung vektor. |
Tambah batal(int index, Elemen E) | Tambahkan elemen pada vektor pada indeks yang ditentukan. | |
addAll | Boolean addAll(Koleksi c) | Menambah semua elemen daripada koleksi yang diberikan ke penghujung vektor. |
Boolean addAll(int index, Collection c) | Menambah semua elemen dalam koleksi yang ditentukan pada indeks yang ditentukan. | |
addElement | void addElement(E obj) | Menambah elemen yang ditentukan di penghujung vektor dengan meningkatkan saiz vektor. |
Kapasiti | Kapasiti int() | Mengembalikan kapasiti semasa bagi vektor. |
Kosongkan | Kosongkan clear() | Kosongkan vektor unsurnya. |
Klon | Klon objek() | Mengklon vektor. |
Mengandungi | Boolean mengandungi(Objek o) | Menyemak sama ada vektor mengandungielemen yang ditentukan. |
mengandungiSemua | Boolean mengandungiSemua(Koleksi c) | Menyemak sama ada vektor mengandungi semua elemen yang terdapat dalam koleksi yang diberikan. |
copyInto | Void copyInto(Object[] anArray) | Menyalin elemen vektor ke dalam tatasusunan yang diberikan. |
ElementAt | E ElementAt(int index) | Mengembalikan elemen vektor pada indeks yang ditentukan. |
Elemen | Enumerationelements() | Mengembalikan komponen terhitung untuk vektor. |
ensureCapacity | Void ensureCapacity(int minCapacity) | Meningkatkan kapasiti vektor untuk memenuhi kapasiti minimum yang ditentukan. |
Nama Kaedah | Prototaip | Penerangan |
---|---|---|
Equals | Boolean equals(Object o) | Membandingkan vektor semasa dengan vektor yang ditentukan untuk menyemak sama ada ia sama. |
firstElement | E firstElement() | Mengembalikan elemen pertama vektor pada indeks 0. |
Get | E get(int index) | Mengembalikan elemen dalam vektor pada indeks yang ditentukan. |
hashCode | int hashCode() | Mengembalikan nilai kod cincang untuk Vektor. |
indexOf | int indexOf(Object o) | mencari indeks kejadian pertama unsur yang diberikan dalam vektor; -1 jikaelemen tidak terdapat dalam vektor. |
int indexOf(Object o, int index) | Mencari vektor daripada indeks yang diberikan ke arah hadapan untuk elemen yang ditentukan;mengembalikan indeks jika elemen ditemui lain -1 jika elemen tidak ditemui. | |
insertElementAt | Kosongkan insertElementAt(E obj, int index) | Memasukkan objek yang diberikan dalam vektor pada indeks yang diberikan. |
isEmpty | Boolean isEmpty() | Menyemak sama ada vektor kosong. |
Iterator | Iteratoriter() | Mengembalikan lelaran yang digunakan untuk melintasi elemen vektor. |
lastElement | E lastElement() | Mengembalikan elemen terakhir vektor . |
lastIndexOf | Int lastIndexOf(Object o) | Mencari vektor untuk kejadian terakhir elemen yang diberikan dan mengembalikan indeks, atau mengembalikan -1 elemen tidak dijumpai. |
Int lastIndexOf(Object o, int index) | Mula mencari kejadian terakhir bagi elemen yang diberikan daripada indeks yang diberikan ke belakang. Mengembalikan indeks jika elemen ditemui lain mengembalikan -1. | |
listIterator | ListIteratorlistIterator() | Mengembalikan lelaran senarai atas elemen vektor. |
ListIteratorlistIterator(int index) | Mengembalikan lelaran senarai ke atas elemen vektor bermula dari yang diberikanindeks. |
Nama Kaedah | Prototaip | Penerangan |
---|---|---|
Alih keluar | E remove(int index) | Memadamkan elemen pada indeks yang diberikan daripada vektor. |
Boolean remove(Object o) | Memadamkan kejadian pertama unsur yang diberikan daripada vektor. Jika elemen tiada, tiada apa yang berlaku kepada vektor | |
removeAll | Boolean removeAll(Collection c) | Memadam semua elemen daripada vektor yang terdapat dalam koleksi yang diberikan. |
void removeAll Elements() | Padam semua elemen vektor sekali gus mengurangkannya kepada saiz sifar. | |
removeElement | Boolean removeElement(Object obj) | Mengalih keluar kejadian pertama elemen yang diberikan daripada vektor. |
void removeElementAt(int index) | Memadamkan elemen pada indeks yang diberikan. | |
removeRange | protected void removeRange(int fromIndex, int toIndex) | Memadamkan semua elemen daripada vektor dalam julat yang diberikan daripada fromIndex (inklusif), totoIndex (eksklusif). |
kekalkanSemua | Boolean retainAll(Koleksi c) | Berbanding dengan 'removeAll' kaedah retainAll mengekalkan elemen dalam Vektor yang sepadan dengan elemen dalam Koleksi yang ditentukan. |
set | E set(int index , elemen E) | Menetapkan nilai pada indeks yang diberikan dengan elemen baharudisediakan. |
Void set ElementAt(E obj, int index) | Menetapkan elemen yang diberikan pada indeks yang diberikan. | |
setSize | Void setSize(int newSize) | Tetapkan saiz yang diberikan untuk vektor ini. |
Saiz | int size() | Mengembalikan bilangan elemen dalam vektor ini atau panjang vektor. |
subSenarai | ListsubList(intfromIndex, inttoIndex) | Mengembalikan paparan atau subSenarai vektor daripada dariIndex hingga keIndex. |
ke Array | Objek[] keArray () | Menukarkan vektor yang diberikan kepada tatasusunan yang mengandungi semua elemen vektor dalam susunan tertentu. |
T[] kepada Tatasusunan(T[] a) | Mengembalikan tatasusunan jenis yang ditentukan mengandungi semua elemen vektor. | |
toString | String toString() | Mengembalikan perwakilan rentetan vektor. |
trimToSize | void trimToSize() | Memangkas vektor untuk menampung saiz semasa. |
Pelaksanaan Vektor
Aturcara Java berikut menunjukkan penggunaan semua kaedah pembina yang diterangkan di atas.
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:
Atur cara di atas mempunyai empat Vektor di dalamnya. V1 pertama dicipta dengan pembina lalai. Vektor v2 kedua dicipta dengan kapasiti awal sebagai 20. Kemudian beberapa elemen ditambahkan pada v2. Vektor ketiga dicipta dengan kapasiti awal 30 dan kenaikan10.
Seterusnya, kami mencipta ArrayList dan mencipta Vektor v4 keempat dengan ArrayList sebagai hujahnya. Akhir sekali, kami memaparkan kandungan setiap Vektor ini.
Perhatikan kandungan Vektor v4 keempat. Memandangkan kami telah menyediakan ArrayList sebagai hujahnya, kandungan ArrayList menjadi kandungan v4.
Contoh Vektor Lengkap
Sekarang mari kita laksanakan satu lagi program yang akan menunjukkan penciptaan vektor , menambah elemen padanya dan memaparkan kandungannya.
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:
Mari kita ambil contoh vektor yang lain. Dalam program ini, kami akan menggunakan vektor rentetan . Kami memanipulasi vektor ini dengan menambahkan elemen dan kemudian mencetak saiz dan kapasitinya.
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:
Isih Vektor
Anda juga boleh mengisih vektor mengikut susunan tertentu. Untuk mengisih Vektor, anda perlu menggunakan kaedah Collections.sort () bagi Java Collections Framework.
Contoh berikut menunjukkan pengisihan vektor.
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); } }
Output:
Atur cara di atas mencipta Vektor nombor ganjil. Kemudian menggunakan kaedah Collections.sort(), Vektor diisih.
Vektor 2D (Dua dimensi)
Vektor 2d ialah Vektor yang mempunyai setiap elemennya sebagai Vektor. Ia juga boleh dipanggil sebagai 'Vektor Vektor'.
Contoh di bawah menunjukkan Vektor 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.