Imprimir
Categoría: Java
Visto: 4010

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.

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.