O que é a classe java.util.Vector?
A classe java.util.Vector oferece a implementação de um array de objetos. Como um array, o Vector pode ser criado com um tamanho inicial (denominado capacity=capacidade) sendo que cada um de seus elementos é acessado através de um índice inteiro. Mas diferentemente do arrays comuns, o tamanho de um Vector (sua capacity) pode aumentar automaticamente para acomodar a inclusão ou explicitamente diminuído para otimizar a remoção de elementos conferindo-lhe grande versatilidade.
Para aumentar a flexibilidade de seu uso a classe Vector armazena somente objetos genéricos do tipo Object. Como todo e qualquer objeto Java é derivado, direta ou indiretamente, da classe Object, então qualquer tipo de objeto pode ser armazenado num Vector. Por outro lado não é possível armazenar-se diretamente tipo primitivos tais como int, float ou char, sendo necessário recorrermos as classes wrapper Integer, Float etc (veja JavaFaq 0104).
Abaixo temos alguns construtores e métodos importantes desta classe:
Método | Descrição |
---|---|
Vector() | Constroi um Vector vazio. |
Vector(int) | Constroi um Vector com a capacidade indicada. |
addElement(Object) | Adiciona o elemento dado ao Vector. |
capacity() | Retorna a capacidade do vetor. |
elementAt(int) | Retorna o elemento armazenado na posição indicada. |
insertElementAt(Object,int) | Insere o elemento dado na posição indicada. |
isEmpty() | Testa se o Vector está vazio. |
removeAllElements() | Remove todos os elementos do Vector e ajusta seu tamanho para zero. |
removeElementAt(int) | Remove o elemento existente na posição indicada. |
setElementAt(Object, int) | Troca o elemento existente na posição indicada pelo elemento dado. |
setSize(int) | Determina a capacidade do Vector. |
size() | Retorna a quantidade de elementos armazenadas no Vector. |
trimToSize() | Ajusta a capacidade para a quantidade de elementos armazenada. |
Para criarmos um novo Vector de tamanho 10 podemos escrever:
Vector v = new Vector(10);
A adição de elementos é feita com o método addElement que tem como argumento o objeto a ser adicionado ao Vector:
v.addElement(objeto);
O acesso aos elementos pode ser feito com o método elementAt que tem como argumento o índice do elemento a ser utilizado. Caso seja especificado um valor inválido como índice, tal como nos arrays, é lançada a exceção ArrayIndexOutOfBoundsException (veja JavaFaq 0056). Note que os elementos retornado por este método são do tipo Object, necessitando um operação de casting para sua correta utilização:
objeto = (tipoObjeto) v.elementAt(posicao);
A seguir um exemplo onde é criado um Vector de 10 posições no qual são inseridos 20 valores reais double, os quais são posteriormente lidos e impressos:
import java.util.Vector; public class ExemploVector { public static void main(String args[]) { System.out.println("Criando Vector com tamanho 10"); Vector v = new Vector(10); for (int i=0; i<20; i++) { System.out.println("Adicionando elemento " + i); v.addElement(new Double(i/3*i)); } for (int i=0; i<20; i++) { System.out.println("Consultando elemento " + i); Double elemento = (Double)v.elementAt(i); System.out.println(" valor = " + elemento.doubleValue()); } } }
Embora extremamente versátil, a classe Vector impõe um overhead significativo quando comparada a arrays comuns, não justificando o seu uso em aplicações onde o tamanho do array poderia ser estimado mesmo que com desperdício. (Veja o uso de arrays no JavaFaq 0062)