Vector ou ArrayList

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

Oi

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

T+

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

[]'s

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 é???

[quote=“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 é???[/quote]

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:

é 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

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?