En PC Resumen vamos a hablar de como funciona la Clase Vector en Java y poner algún ejemplo práctico. Esta clase es prácticamente igual a ArrayList y es ésta la que se utiliza normalmente, excepto cuando queremos sincronización.

En cualquier momento, un objeto Vector contiene un número de elementos que es menor o igual que su capacidad. Si un Vector requiere más capacidad el programador puede incrementarla o se incrementa de forma predeterminada. Si no especificamos un incremento de capacidad o si especificamos uno que sea menor o igual que cero, el sistema duplica el tamaño del objeto cada vez que se necesite capacidad adicional.

  • Insertar un elemento en un Vector que tenga espacio es operación relativamente rápida.
  • Insertar un elemento en un Vector que no tenga espacio es operación relativamente lenta.
  • Si el almacenamiento es fundamental, utilice el método trimToSize para recortar la capacidad a su medida exacta. Lógicamente cuando se agregue otro elemento, éste se verá forzado a crecer de forma dinámica.

En el siguiente programa vemos algunas operaciones típicas (para más operaciones consultar la API de Java):

import java.util.Vector;
import java.util.NoSuchElementException;

public class PruebaVector {

    private static final String colores [] = {"rojo", "blanco", "azul"};
    
    public PruebaVector() {
        Vector<String> vector = new Vector<String>();
        imprimirVector (vector);
        for (String color: colores) {
            vector.add(color);
        }
        imprimirVector(vector);
        try {
            System.out.printf("Primer elemento: %s\n", vector.firstElement());
            System.out.printf("Último elemento: %s\n", vector.lastElement());
        } // atrapa la excepción si el vector está vacío
        catch (NoSuchElementException excepcion) {
            excepcion.printStackTrace();
        }
        if (vector.contains("rojo")) {
            System.out.printf("\n se ha encontrado \" rojo \" en el índice %d \n \n", vector.indexOf("rojo"));
        } else {
            System.out.println("\n ha encontrado \" rojo \" \n");
        }
        vector.remove("rojo");
        System.out.println("se ha eliminado \" rojo \"");
        imprimirVector(vector);
        if (vector.contains("rojo")) {
            System.out.printf ("\n se ha encontrado \" rojo \" en el índice %d \n \n", vector.indexOf ("rojo"));
        } else {
            System.out.println("\n ha encontrado \" rojo \"\n");
        }
        System.out.printf("\n Mida: %d \nCapacitat: %d\n", vector.size(), vector.capacity());
    }

    private void imprimirVector(Vector<String> vectorAImprimir) {
        if (vectorAImprimir.isEmpty()) {
            System.out.print("el vector está vacío");
        } else {
            System.out.print("el vector contiene: ");
            for (String elemento: vectorAImprimir) {
                System.out.printf("%s", elemento);
            }
        }
        System.out.println("\n");
    }

    public static void main(String args[]) {
        new PruebaVector();
    }
}

Los métodos contains y indexOf realizan búsquedas lineales. Estas búsquedas son bastante ineficientes en vectores grandes. Si un programa tiene que buscar a menudo elementos en una colección es más eficiente utilizar alguna implementación de Map, la cual proporciona métodos de búsqueda de alta velocidad.

Pin It