Este titorial explica todo sobre a estrutura de datos vectoriais en Java con exemplos. Aprenderás a Crear, Iniciar, Ordenar e amp; Use un vector Java nos seus programas:
Un vector pódese definir como unha matriz dinámica que pode crecer ou diminuír por si só, é dicir, o vector crecerá cando se lle engaden máis elementos e encolle cando se lle engaden elementos. son eliminados del.
Este comportamento é diferente ao das matrices que son estáticas. Pero, de xeito similar ás matrices, pódese acceder aos elementos vectoriais mediante índices enteiros.
Un vector pódese ver como semellante a outra estrutura de datos de matriz dinámica, Lista de matrices excepto a dúas diferenzas abaixo:
- O vector está sincronizado, é dicir, todos os métodos en Vector están marcados como "sincronizados" e, polo tanto, unha vez que se invoca un método, non se pode invocar o mesmo método a menos que a chamada anterior teña rematou.
- A clase vectorial ten moitos métodos que non forman parte do marco de coleccións senón os seus métodos legados.
Clase vectorial Java
A clase Vector é ademais do paquete “ java.util ” e implementa a interface Lista. Un Vector é unha matriz de obxectos ou vector de obxectos.
A continuación dáse unha declaración de clase da clase Vector:
public class Vector extends Object implements List, Cloneable, Serializable
Como se mostra arriba, unha clase Vector esténdese “ java.lang.object ” e implementa interfaces List, Cloneable e Serializable.
Como crear un vector en Java?
Podecree un obxecto Vector usando calquera dos seguintes métodos de construtor vectorial.
Prototipo de construtor | Descrición |
---|---|
vector() | Este é o construtor predeterminado da clase Vector. Crea un vector baleiro de tamaño 10. |
vector(int initialCapacity) | Este construtor sobrecargado constrúe un obxecto Vector baleiro coa capacidade = initialCapacity. |
vector(int initialCapacity, int capacityIncrement) | Este método constructor crea un obxecto Vector baleiro con initialCapacity e capacityIncrement especificados. |
Vector(Colección c) | Créase un obxecto Vector cos elementos iniciais da colección especificada c. |
Vexamos cada un dos construtores para inicializar obxectos Vector.
Inicializar Vector
(i) Vector()
Este é o construtor predeterminado da clase Vector. Cando invoca este constructor, créase un obxecto Vector de tamaño predeterminado 10.
A sintaxe xeral deste método é:
Obxecto Vector = new Vector();
Por exemplo,
Vector vec1 = new Vector ();
A instrución anterior crea un novo Vector 'vec1' con tamaño 10.
(ii) Vector(int initialCapacity)
O construtor sobrecargado da clase Vector acepta 'initialCapacity' como argumento. Este constructor crea un Vectorobxecto coa capacidade especificada.
A sintaxe xeral do método é:
Obxecto vectorial = novo Vector (capacidade inicial);
Por exemplo,
Vector vec1 = new Vector (10);
A instrución de programación anterior creará un obxecto Vector "vec1" cunha capacidade de 10, é dicir, este Vector pode almacenar ata 10 elementos.
(iii) Vector(int initialCapacity, int capacityIncrement)
Este é outro construtor sobrecargado da clase Vector e crea un obxecto Vector coa inicial especificada. capacidade e incremento para a capacidade.
A sintaxe xeral deste método é:
Obxecto vectorial = novo Vector (initialCapacity, capacityIncrement);
Por exemplo,
Vector vec1 = new Vector(5,10);
Na afirmación anterior, a capacidade inicial do Vector é 5 e o incremento é 10. Isto significa que cando o Insírese o 6º elemento no vector, a capacidade do vector incrementarase a 15 (5 + 10). Do mesmo xeito, cando se insire o elemento 16, a capacidade vectorial do Vector estenderase a 25 (15 +10).
(iv) Vector(Colección c)
O último construtor sobrecargado da clase Vector toma unha colección predefinida como argumento e crea un Vector con todos os elementos desta colección como elementos.
A sintaxe xeral é:
Obxecto vectorial = novo Vector (Colección c);
Por exemplo,
Vector vec1 = new Vector(aList); where aList = {1,2,3,4,5};
Oa instrución anterior creará un Vector 'vec1' con elementos iniciais como {1,2,3,4, 5}.
Tenndo presentes todas estas descricións permitiranos implementar un programa Vector para comprender mellor estes construtores.
Métodos vectoriales en Java
Os seguintes son os métodos que admite a clase Vector en Java.
Nome do método | Prototipo | Descrición |
---|---|---|
add | Boolean add(E e) | Engade un elemento dado ao final do vector. |
Void add(índice int, Elemento E) | Engadir elemento ao vector no índice especificado. | |
addAll | Booleano addAll(Colección c) | Engade todos os elementos da colección dada ao final do vector. |
Booleano addAll(índice int, Colección c) | Engade todos os elementos na colección especificada no índice especificado. | |
addElement | void addElement(E obj) | Engade o elemento especificado en o final do vector aumentando o tamaño do vector. |
Capacidade | Int capacity() | Devolve a capacidade actual de o vector. |
Clear | Void clear() | Borra o vector dos seus elementos. |
Clonar | Obxecto clone() | Clona o vector. |
Contén | O booleano contén(Obxecto o) | Comproba se o vector conténelemento especificado. |
containsAll | Boolean containsAll(Colección c) | Comproba se o vector contén todos os elementos presentes en colección dada. |
copyInto | Void copyInto(Object[] anArray) | Copia os elementos vectoriales nunha matriz dada. |
ElementAt | E ElementAt(índice int) | Devolve o elemento vectorial no índice especificado. |
Elementos | Enumerationelements() | Devolve os compoñentes enumerados para o vector. |
ensureCapacity | Void ensureCapacity(int minCapacity) | Aumenta a capacidade do vector para cumprir a capacidade mínima especificada. |
Nome do método | Prototipo | Descrición |
---|---|---|
Iguais | Booleano iguais(Obxecto o) | Compara o vector actual co vector especificado para comprobar se son iguais. |
firstElement | E firstElement() | Devolve o primeiro elemento do vector no índice 0. |
Get | E get(índice int) | Devolve o elemento do vector no índice especificado. |
hashCode | int hashCode() | Devolve o valor do código hash para o Vector. |
indexOf | int indexOf(Obxecto o) | atopa o índice da primeira aparición do elemento dado no vector; -1 seo elemento non está presente no vector. |
int indexOf(Object o, int index) | Busca o vector a partir do índice dado en dirección adiante para o elemento especificado;retorna index se se atopa o elemento senón -1 se o elemento non se atopa. | |
insertElementAt | Void insertElementAt(E obj, int index) | Insire o obxecto indicado no vector no índice dado. |
isEmpty | Boolean isEmpty() | Comproba se o vector está baleiro. |
Iterador | Iteratoriterator() | Devolve un iterador que se usa para percorrer os elementos do vector. |
lastElement | E lastElement() | Devolve o último elemento do vector . |
lastIndexOf | Int lastIndexOf(Object o) | Busca no vector a última aparición do elemento dado e devolve o índice ou devolve -1 o elemento non se atopa. |
Int lastIndexOf(Object o, int index) | Comeza a buscar a última aparición do elemento dado desde o índice dado cara atrás. Devolve o índice se se atopa o elemento senón devolve -1. | |
listIterator | ListIteratorlistIterator() | Devolve un iterador de lista sobre os elementos vectoriais. |
ListIteratorlistIterator(índice int) | Devolve un iterador de lista sobre os elementos vectoriais a partir do dadoíndice. |
Nome do método | Prototipo | Descrición |
---|---|---|
Eliminar | E remove(índice int) | Elimina o elemento do índice dado do vector. |
Boolean remove(Object o) | Elimina a primeira aparición do elemento dado do vector. Se o elemento non está presente, non lle pasa nada ao vector | |
removeAll | Boolean removeAll(Colección c) | Elimina todos os elementos do vector que están presentes na colección dada. |
void removeAll Elements() | Elimina todos os elementos vectoriais reduíndoos así a tamaño cero. | |
removeElement | Boolean removeElement(Object obj) | Elimina a primeira aparición do elemento dado do vector. |
void removeElementAt(int índice) | Elimina o elemento do índice indicado. | |
removeRange | protected void removeRange(int fromIndex, int toIndex) | Elimina todos os elementos do vector no intervalo indicado de fromIndex (inclusive), totoIndex (exclusivo). |
retainAll | Boolean retainAll(Colección c) | A diferenza de 'removeAll', o método retainAll conserva os elementos do Vector que coinciden cos elementos da Colección especificada. |
set | E set(int index , elemento E) | Establece o valor nun índice dado co novo elementoproporcionado. |
Void set ElementAt(E obj, int index) | Establece os elementos dados no índice dado. | |
setSize | Void setSize(int newSize) | Establece o tamaño dado para este vector. |
Size | int size() | Devolve o número de elementos deste vector ou a lonxitude do vector. |
subList | ListsubList(intfromIndex, inttoIndex) | Devolve unha vista ou subLista do vector que vai dende Index ataIndex. |
toArray | Obxecto[] toArray () | Converte o vector dado nunha matriz que contén todos os elementos vectoriais na orde dada. |
T[] toArray(T[] a) | Devolve unha matriz do tipo especificado que contén todos os elementos vectoriales. | |
toString | String toString() | Devolve unha representación en cadea do vector. |
trimToSize | void trimToSize() | Recorta o vector para acomodar o tamaño actual. |
Implementación vectorial
O seguinte programa Java demostra o uso de todos os métodos construtores descritos anteriormente.
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); } }
Saída:
O programa anterior ten catro Vectores nel. O primeiro v1 créase cun construtor predeterminado. O segundo Vector v2 créase cunha capacidade inicial de 20. Despois engádense poucos elementos á v2. O terceiro Vector créase cunha capacidade inicial de 30 e incremento10.
A continuación, creamos unha ArrayList e un cuarto Vector v4 coa ArrayList como argumento. Finalmente, mostramos o contido de cada un destes Vectores.
Teña en conta o contido do cuarto Vector v4. Como fornecemos ArrayList como argumento, os contidos de ArrayList convértense no contido da v4.
Exemplo completo de vectores
Agora imos implementar outro programa que mostrará a creación de vectores. , engadindolle elementos e mostrando o seu contido.
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)); } }
Saída:
Poñamos outro exemplo vectorial. Neste programa, imos utilizar un vector de cadea . Manipulamos este vector engadindo elementos e despois imprimimos o seu tamaño e capacidade.
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() + " "); } }
Saída:
Ordenar un vector
Tamén pode ordenar un vector segundo unha orde específica. Para ordenar un vector, tes que usar o método Collections.sort () de Java Collections Framework.
O seguinte exemplo mostra a ordenación vectorial.
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); } }
Saída:
O programa anterior crea un Vector de números impares. Despois, usando o método Collections.sort(), ordénase o Vector.
Vector 2D (bidimensional)
Un Vector 2d é un Vector que ten cada un dos seus elementos como Vector. Tamén se pode denominar "vector de vectores".
Un exemplo a continuación mostra o vector 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.