logo

Clase vectorial en Java

La clase Vector implementa una variedad creciente de objetos. Los vectores pertenecen a clases heredadas, pero ahora son totalmente compatibles con las colecciones. Se encuentra en paquete java.util e implementar el Lista interfaz, por lo que podemos usar todos los métodos de la interfaz List como se muestra a continuación:

Clase vectorial en Java

  • Vector implementa una matriz dinámica, lo que significa que puede crecer o reducirse según sea necesario. Al igual que una matriz, contiene componentes a los que se puede acceder mediante un índice entero.
  • Son muy similares a Lista de arreglo , pero Vector está sincronizado y tiene algunos métodos heredados que el marco de la colección no contiene.
  • También mantiene un orden de inserción como ArrayList. Aún así, rara vez se usa en un entorno sin subprocesos, ya que es sincronizado , y debido a esto, ofrece un rendimiento deficiente al agregar, buscar, eliminar y actualizar sus elementos.
  • Los iteradores devueltos por la clase Vector son a prueba de fallos. En el caso de modificación concurrente, falla y arroja el ConcurrentModificationException.

Sintaxis:



public class Vector extends AbstractList implements List, RandomAccess, Cloneable, Serializable>

Aquí, Y es el tipo de elemento.

  • se extiende ResumenLista e implementos Lista interfaces.
  • Implementa interfaces serializables, clonables, iterables, de colección, de lista y de acceso aleatorio.
  • La subclase directamente conocida es Pila .

Los puntos importantes con respecto al Incremento de la capacidad vectorial son los siguientes:

Si se especifica el incremento, Vector se expandirá de acuerdo con él en cada ciclo de asignación. Aún así, si no se especifica el incremento, entonces la capacidad del vector se duplica en cada ciclo de asignación. Vector define tres miembros de datos protegidos:

  • int capacidadIncremento: Contiene el valor del incremento.
  • int elementoCount: Número de elementos actualmente en el vector almacenados en él.
  • Elemento de objetoDatos[]: La matriz que contiene el vector se almacena en él.

Los errores comunes en la declaración de vectores son los siguientes: sigue :

  • Vector lanza un Argumento de excepción ilegal si el tamaño inicial del vector definido es negativo.
  • Si la colección especificada es nula, arroja Excepción de puntero nulo .

Constructores

1. Vector(): Crea un vector predeterminado de la capacidad inicial es 10.

Vector v = new Vector();>

2. Vector (tamaño int): Crea un vector cuya capacidad inicial se especifica por tamaño.

Vector v = new Vector(int size);>

3. Vector (tamaño int, int incr): Crea un vector cuya capacidad inicial se especifica por tamaño y el incremento se especifica por incr. Especifica el número de elementos que se asignarán cada vez que se cambia el tamaño de un vector hacia arriba.

expresiones lambda de java
Vector v = new Vector(int size, int incr);>

4. Vector(Colección c): Crea un vector que contiene los elementos de la colección c.

Vector v = new Vector(Collection c);>

Métodos en clase vectorial

MÉTODO

DESCRIPCIÓN

agregar(Y y) Agrega el elemento especificado al final de este vector.
agregar (índice int, elemento E) Inserta el elemento especificado en la posición especificada en este vector.

agregarTodo(Colección

extiende E>c)

concatenación de cadenas java
Agrega todos los elementos de la Colección especificada al final de este Vector, en el orden en que los devuelve el Iterador de la Colección especificada.

agregarTodo(índice int,

Colección c)

Inserte todos los elementos de la Colección especificada en este Vector en la posición especificada.
agregarElemento(E obj) Agrega el componente especificado al final de este vector, aumentando su tamaño en uno.
capacidad() Devuelve la capacidad actual de este vector.
claro() Elimina todos los elementos de este vector.
clon() Devuelve un clon de este vector.
contiene(Objeto o) Devuelve verdadero si este vector contiene el elemento especificado.
contieneTodo(Colección c) Devuelve verdadero si este Vector contiene todos los elementos de la Colección especificada.
copiar en (objeto [] una matriz) Copia los componentes de este vector en la matriz especificada.
elementoAt(índice int) Devuelve el componente en el índice especificado.
elementos() Devuelve una enumeración de los componentes de este vector.
asegurarCapacidad(int minCapacity) Aumenta la capacidad de este vector, si es necesario, para garantizar que pueda contener al menos el número de componentes especificados por el argumento de capacidad mínima.
es igual(Objeto o) Compara el objeto especificado con este vector para determinar la igualdad.
primerElemento() Devuelve el primer componente (el elemento en el índice 0) de este vector.

para cada uno (consumidor

súper E> acción)

Realiza la acción dada para cada elemento del Iterable hasta que se hayan procesado todos los elementos o la acción genere una excepción.
obtener (índice int) Devuelve el elemento en la posición especificada en este Vector.
código hash() Devuelve el valor del código hash para este vector.
índice de (objeto o)

Devuelve el índice de la primera aparición del elemento especificado en este vector,

o -1 si este vector no contiene el elemento.

indexOf(Objeto o, int índice) Devuelve el índice de la primera aparición del elemento especificado en este vector, buscando hacia adelante desde el índice, o devuelve -1 si no se encuentra el elemento.
insertElementAt(E obj, índice int) Inserta el objeto especificado como un componente en este vector en el índice especificado.
esta vacio() Prueba si este vector no tiene componentes.
iterador() Devuelve un iterador sobre los elementos de esta lista en una secuencia adecuada.
último elemento() Devuelve el último componente del vector.
último índice de (objeto o)

Devuelve el índice de la última aparición del elemento especificado en este vector,

o -1 si este vector no contiene el elemento.

lastIndexOf(Objeto o, índice int) Devuelve el índice de la última aparición del elemento especificado en este vector, buscando hacia atrás desde el índice, o devuelve -1 si no se encuentra el elemento.
listaIterador() Devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada).
listaIterator(índice int)

Devuelve un iterador de lista sobre los elementos de esta lista (en la secuencia adecuada),

comenzando en la posición especificada en la lista.

eliminar (índice int) Elimina el elemento en la posición especificada en este Vector.
eliminar (Objeto o) Elimina la primera aparición del elemento especificado en este vector. Si el Vector no contiene el elemento, no se modifica.
eliminarTodo(Colección c) Elimina de este Vector todos sus elementos contenidos en la Colección especificada.
eliminarTodosLosElementos() Elimina todos los componentes de este vector y establece su tamaño en cero.
eliminarElemento(Objeto obj) Elimina la primera aparición (con el índice más bajo) del argumento de este vector.
eliminarElementAt(índice int) Elimina el componente en el índice especificado.
removeIf(filtro de predicado) Elimina todos los elementos de esta colección que satisfacen el predicado dado.

removeRange(int fromIndex,

¿Por qué cadena inmutable en Java?

int a índice)

Elimina de esta lista todos los elementos cuyo índice esté entre fromIndex, inclusive, y toIndex, exclusivo.
reemplazarTodo(operadorUnaryOperator)Reemplaza cada elemento de esta lista con el resultado de aplicar el operador a ese elemento.
retenerTodo(Colección c) Conserva únicamente los elementos de este Vector contenidos en la Colección especificada.
conjunto (índice int, elemento E) Reemplaza el elemento en la posición especificada en este Vector con el elemento especificado.
setElementAt(E obj, índice int) Establece el componente en el índice especificado de este vector para que sea el objeto especificado.
establecerTamaño(int nuevoTamaño) Establece el tamaño de este vector.
tamaño() Devuelve el número de componentes de este vector.
ordenar(Comparador c) Ordena esta lista según el orden inducido por el Comparador especificado.
divisor() Crea un Spliterator de enlace tardío y de falla rápida sobre los elementos de esta lista.
subLista(int del índice, int al índice) Devuelve una vista de la parte de esta Lista entre fromIndex, inclusive, y toIndex, exclusivo.
a matriz() Devuelve una matriz que contiene todos los elementos de este vector en el orden correcto.
aArray(T[] a) Devuelve una matriz que contiene todos los elementos de este Vector en el orden correcto; el tipo de tiempo de ejecución de la matriz devuelta es el de la matriz especificada.
Encadenar() Devuelve una representación de cadena de este vector, que contiene la representación de cadena de cada elemento.
recortarToSize() Recorta la capacidad de este vector para que tenga el tamaño actual del vector.

Primero analicemos e implementemos cómo crear y usar un vector antes de abordar los métodos de esta clase.

Ejemplo:

Java
// Java Program to Demonstrate Working of Vector // Via Creating and Using It // Importing required classes import java.io.*; import java.util.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Size of the Vector int n = 5; // Declaring the Vector with // initial size n Vector v = nuevo vector (norte); // Agregando nuevos elementos al // final del vector for (int i = 1; i<= n; i++) v.add(i); // Printing elements System.out.println(v); // Remove element at index 3 v.remove(3); // Displaying the vector // after deletion System.out.println(v); // iterating over vector elements // using for loop for (int i = 0; i < v.size(); i++) // Printing elements one by one System.out.print(v.get(i) + ' '); } }>

Producción
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

Nota:

  • Si no se especifica el incremento del vector, su capacidad se duplicará en cada ciclo de incremento.
  • La capacidad de un vector no puede ser inferior a su tamaño, puede ser igual a él.

Realizar varias operaciones en la clase Vector en Java

Analicemos varias operaciones en la clase Vector que se enumeran a continuación:

  1. Agregar elementos
  2. Actualizando elementos
  3. Eliminando elementos
  4. Iterando sobre elementos

Operación 1: Agregar elementos

Para agregar los elementos al Vector, usamos el agregar() método. Este método está sobrecargado para realizar múltiples operaciones basadas en diferentes parámetros. Se enumeran a continuación de la siguiente manera:

  • agregar(Objeto): Este método se utiliza para agregar un elemento al final del Vector.
  • agregar (índice int, objeto): Este método se utiliza para agregar un elemento en un índice específico en el Vector.

Ejemplo:

Java
// Java Program to Add Elements in Vector Class // Importing required classes import java.io.*; import java.util.*; // Main class // AddElementsToVector class GFG { // Main driver method public static void main(String[] arg) { // Case 1 // Creating a default vector Vector v1 = new Vector(); // Adding custom elements // using add() method v1.add(1); v1.add(2); v1.add('geeks'); v1.add('forGeeks'); v1.add(3); // Printing the vector elements to the console System.out.println('Vector v1 is ' + v1); // Case 2 // Creating generic vector Vector v2 = nuevo vector (); // Agregar elementos personalizados // usando el método add() v2.add(1); v2.add(2); v2.add(3); // Imprimir los elementos vectoriales en la consola System.out.println('Vector v2 is ' + v2); } }>

Producción:

matriz java de cadena


Vector v1 is [1, 2, geeks, forGeeks, 3] Vector v2 is [1, 2, 3]>

Operación 2: Actualizando elementos

Después de agregar los elementos, si deseamos cambiar el elemento, podemos hacerlo usando el colocar() método. Dado que un vector está indexado, el índice del elemento hace referencia al elemento que deseamos cambiar. Por lo tanto, este método toma un índice y el elemento actualizado se insertará en ese índice.

Ejemplo

Java
// Java code to change the // elements in vector class import java.util.*; // Driver Class public class UpdatingVector { // Main Function public static void main(String args[]) { // Creating an empty Vector Vector vec_tor = nuevo vector (); // Usa el método add() para agregar elementos en el vector vec_tor.add(12); vec_tor.add(23); vec_tor.add(22); vec_tor.add(10); vec_tor.add(20); // Mostrando el vector System.out.println('Vector: ' + vec_tor); // Usando el método set() para reemplazar 12 con 21 System.out.println('El objeto que se reemplaza es: ' + vec_tor.set(0, 21)); // Usando el método set() para reemplazar 20 con 50 System.out.println('El objeto que se reemplaza es: ' + vec_tor.set(4, 50)); // Mostrando el vector modificado System.out.println('El nuevo vector es:' + vec_tor); } }>

Producción
Vector: [12, 23, 22, 10, 20] The Object that is replaced is: 12 The Object that is replaced is: 20 The new Vector is:[21, 23, 22, 10, 50]>

Operación 3: Eliminando elementos

Para eliminar un elemento de un vector, podemos usar el eliminar() método. Este método está sobrecargado para realizar múltiples operaciones basadas en diferentes parámetros. Ellos son:

  • eliminar (Objeto): Este método se utiliza para eliminar un objeto del Vector. Si hay varios objetos de este tipo, se elimina la primera aparición del objeto.
  • eliminar (índice int): Dado que un vector está indexado, este método toma un valor entero que simplemente elimina el elemento presente en ese índice específico en el vector. Después de eliminar el elemento, todos los elementos se mueven hacia la izquierda para llenar el espacio y se actualizan los índices de los objetos.

Ejemplo

Java
// Java code illustrating the removal // of elements from vector import java.util.*; import java.io.*; class RemovingElementsFromVector { public static void main(String[] arg) { // Create default vector of capacity 10 Vector v = new Vector(); // Add elements using add() method v.add(1); v.add(2); v.add('Geeks'); v.add('forGeeks'); v.add(4); // Removing first occurrence element at 1 v.remove(1); // Checking vector System.out.println('after removal: ' + v); } }>

Producción:

after removal: [1, Geeks, forGeeks, 4]>

Operación 4: Iterando el vector

ejemplos de código de muestra de javascript

Hay varias formas de iterar a través del Vector. Las formas más famosas son mediante el uso del bucle for básico en combinación con un conseguir() método para obtener el elemento en un índice específico y el avanzado para un bucle .

Ejemplo

Java
// Java program to iterate the elements // in a Vector import java.util.*; public class IteratingVector { public static void main(String args[]) { // create an instance of vector Vectorv = nuevo vector(); // Agrega elementos usando el método add() v.add('Geeks'); v.add('Geeks'); v.add(1, 'Para'); // Usando el método Get y el // bucle for for (int i = 0; i< v.size(); i++) { System.out.print(v.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : v) System.out.print(str + ' '); } }>

Producción
Geeks For Geeks Geeks For Geeks>

Nota: Dale una lectura al Clase ArrayList vs Vector en Java para captarlo mejor.

En Java, la clase Vector es parte del marco de colecciones de Java y proporciona una implementación de matriz dinámica de la interfaz List. Se agregó en la versión original de Java (Java 1.0) y proporciona varios métodos para manipular los elementos de un vector, incluida la adición, inserción y eliminación de elementos.

Aquí hay un ejemplo simple que demuestra cómo usar un vector en Java:

Java
import java.util.Vector; public class VectorExample { public static void main(String[] args) { // Create a new vector Vector v = nuevo Vector(3, 2); // Agrega elementos al vector v.addElement(1); v.addElement(2); v.addElement(3); // Insertar un elemento en el índice 1 v.insertElementAt(0, 1); // Elimina el elemento en el índice 2 v.removeElementAt(2); // Imprime los elementos del vector for (int i : v) { System.out.println(i); } } }>

Producción
1 0 3>

Tenga en cuenta que la clase Vector está sincronizada, lo que significa que varios subprocesos pueden acceder al mismo vector sin causar problemas. Sin embargo, esta sincronización tiene un costo de rendimiento, por lo que si no necesita compartir un vector entre varios subprocesos, generalmente es mejor usar una clase alternativa como ArrayList que no está sincronizada.

Ventajas de utilizar Vector en Java:

  1. Sincronización: como se mencionó anteriormente, Vector está sincronizado, lo que hace que su uso sea seguro en un entorno de subprocesos múltiples.
  2. Tamaño dinámico: el tamaño de un vector puede crecer o reducirse dinámicamente a medida que se agregan o eliminan elementos, por lo que no tiene que preocuparse por establecer un tamaño inicial que se adapte a todos los elementos.
  3. Soporte heredado: Vector ha sido parte de Java desde sus inicios y aún es compatible, por lo que es una buena opción si necesita trabajar con código Java antiguo que usa Vector.

Desventajas de usar Vector en Java:

  1. Rendimiento: la sincronización en Vector puede provocar un rendimiento más lento en comparación con otras clases de colección, como ArrayList.
  2. Código heredado: si bien Vector todavía es compatible, el código Java más nuevo a menudo se escribe utilizando las clases de colección más modernas, por lo que puede ser más difícil encontrar ejemplos y soporte para Vector.
  3. Gastos generales innecesarios: si no necesita las funciones de sincronización de Vector, usarlo agregará gastos innecesarios a su código.

Libro de referencia

Un buen libro de referencia para aprender sobre Java Collections Framework y Vector es Java Collections de Naftalin y Wadler. Este libro proporciona una visión integral del marco de las colecciones de Java, incluido Vector, e incluye muchos ejemplos y ejercicios para ayudarlo a comprender cómo usar estas clases de manera efectiva.