Vector ou ArrayList

6 respostas
I

Tenho uma classe, q extends Thread, q vai trata uma conexão entre um clientes e servidor… nessa classe vou criar uma “Array” de uma classe q vai armazenar algumas informações dessa “conversas”…

agora vem a dúvida… essa “array” (q tem q ser redimensionavel) tem q ser ArrayList ou Vector… pois tem akele problema de sincronizado…

Alguem sabe me dizer ql a collection mais apropriada para isso???

Muito Obrigado
Italo Naia

6 Respostas

J

Oi

italo, eu usaria o Vector, devido a questão de sincronização.

T+

J

Se vc precisa garantir sincronização use o Vector, se vc precisa de velocidade no acesso aos elementos use ArrayList

[]'s

I

Nossa… acho q acabei de viajar na maionese!!!

depois q postei pensei…

naum é possivel eu criar uma ArrayList q contenha instancia de uma outra classe neh??? ou é???

J

“italobraz”:
Nossa… acho q acabei de viajar na maionese!!!

depois q postei pensei…

naum é possivel eu criar uma ArrayList q contenha instancia de uma outra classe neh??? ou é???

Depende… se esta outra instância for uma ArrayList sim…

Agora se vc quiser de qualquer maneira utilizar o ArrayList, vc pode sincroniza-lo, através desta classe:

List suaArrayListSincronizada = Collections.synchronizedList(suaArrayList);

O método synchronizedList irá te retorna uma referência do seu ArrayList sincronizado… :wink:

I

é o seguinte …

vou ter uma classe… mais expecificamente… esta classe:

class info {
    
  private String servico; 
  private String IP; 
  private int Porta; 
  
  info (String servico, String IP, int Porta) {
    this.servico = servico; 
    this.IP = IP; 
    this.Porta = Porta; 
  } 
    
  public String getServico() { 
    return this.servico; 
  } 
  public String getIP() { 
    return this.IP; 
  } 
  public int getPorta() { 
    return this.Porta; 
  } 
    
}

o q eu tenho q fazer é mais ou menos um BINDER (Servidor de Nomes)… onde Servidores entrar com as informações desta classe ai em cima…

e clientes vão pedir por informações de ql é o IP do serviço Tal…

blz… o binder eu fiz… e fiz uma classe q é uma Thread q vai conversar com cliente ou com o servidor… e vão ter vários clientes e vários servidores… ai pra mim armazenar as informações utilizo a classe acima… pra isso uma array…

só q agora nem sei como coloco uma instancia desta classe dentro de um elemento do Vector, ArrayList, etc… fiquei meio pedido… alguém pode me dar uma Luz??

muito obrigado
Italo Naia

J
public class Info {

    private String servico;
    private String IP;
    private int Porta;

    public Info(String servico, String IP, int Porta) {
      this.servico = servico;
      this.IP = IP;
      this.Porta = Porta;
    }

    public String getServico() {
      return this.servico;
    }

    public String getIP() {
      return this.IP;
    }

    public int getPorta() {
      return this.Porta;
    }

  }

O dois estão no mesmo pacote.

import java.util.Vector;

public class ExemploVector {
   
  public ExemploVector() {
  }
  
  public static void main (String[] args) {
    //Instâncio o Vector
    Vector v = new Vector();
    //Crio as instâncias de Info
    Info info1 = new Info("Imprimir","127.0.0.1",1);
    Info info2 = new Info("Deletar arquivo","192.168.0.1",2);
    Info info3 = new Info("Imprimir","192.168.0.3",3);
    //Adiciono os elementos Info no Vector. 
    //Pode perceber que, o elemento info1 esta na posição 0, consequentemento o info2
    //esta na posição 1 e assim por diante
    v.add(info1);
    v.add(info2);
    v.add(info3);
    //Aqui eu imprimo os IPs dos infos
    //Como o get(int) do Vector me retorna um Object é necessário eu fazer um cast
    //Eu poderia imprimir o Serviço ou a porta é só mudar o getIP para o que vc
    //quiser
    System.out.println(((Info)v.get(0)).getIP());
    System.out.println(((Info)v.get(1)).getIP());
    System.out.println(((Info)v.get(2)).getIP());
  }
    
}

No código tem os comentários relevantes… blz?

Criado 24 de maio de 2004
Ultima resposta 25 de mai. de 2004
Respostas 6
Participantes 4