sexta-feira, 16 de dezembro de 2011

Vector


A classe denominada java.util.Vector implementa um array de objetos que pode ter a quantidade de elementos alterada - itens podem ser inseridos ou apagados depois da criação do objeto Vector. Da mesma forma que um Array, os elementos podem ser acessados via um índice inteiro.

Esta classe permite o uso de iterators para acessar os seus componentes. Um iterator depois de criado, ao tentar ler um objeto que foi removido ou adicionado por outro processo depois do iterator ter sido criado, gera uma exceção ConcurrentModificationException. Este comportamento é denominado fail-fast. Uma boa programação não utiliza esta característica, já que a exceção é gerada como best effort. Esta classe retorna também Enumerations, porém este não são fail-fast.

A declaração desta classe é

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

Depois de criado podemos utilizar dois métodos para inserir um objeto no Vector: .add(objeto) ou .add(indice, objeto). Veja no exemplo estas duas situações. size() retorna o número de elementos do Vector.

Vamos ver um exemplo de utilização do Vector criando um array de String que pode ser redimensionado. Notem que poderia ser qualquer tipo de objeto.

import java.util.*;
import java.util.Vector;

public class ExemploVector {
  public static void main(String[] args) {

    Vector<String> v1=new Vector<String>();
    Vector<String> v2=new Vector<String>();

    // não temos que criar a quantidade de elementos
// eles podem ser adicionados um a um, utilizando .add
    v1.add("String 1");
    v1.add("String 2");
    v1.add("String 3");
    v1.add("String 5");
    v1.add("String 6");

    // podemos adicionar um elemento em uma posição determinada
    v1.add(3, "String 4");

    // número de elementos de v1
    System.out.println("tamanho (depois dos add) :"+v1.size());

// uma forma de buscar os elementos de um Vector
Enumeration<String> vEnum = v1.elements();
System.out.println("Lista dos elementos de v1 (usando Enumerator):");
while(vEnum.hasMoreElements())
      System.out.println(vEnum.nextElement() + " ");

    // vamos copiar os seis elementos de v1 para v2
for(int i=0; i<v1.size(); i++)
     v2.add(v1.get(i));

// vamos remover os itens de indice 2 a 4
for(int i=4; i>1; i--)
      v1.remove(i);

// adiciona os itens em v2 no Vector v1
v1.addAll(v2);

// número de elementos de v1
System.out.println("tamanho (depois de adicionar v2) :"+v1.size());

// uma segunda forma de mostrar os elementos 
for(int i=0; i<v1.size(); i++) 
      System.out.println("Vector["+i+"] :"+v1.get(i));
  }
}

Esta classe compilada e executada gera o seguinte resultado:

Nenhum comentário:

Postar um comentário