Class com array de objeto como atributo

Ae, tou tendo dificuldade de criar uma classe que tenha um array de objetos como atributo

por Exemplo:

Class Coligacao{
private String nomeColigacao;
private int votosColigacao, numeroVagas;
private Candidato[] array;

//aqui é onde esta o problema nao tou sabendo como declarar corretamento esse metodo

public void adicionarObjeto(Candidato obj){
array = ?? (new Candidato(obj.getAtributo())?? obj???)???
}

Alguem ai poderia me dar uma luz?
flw

tipo primeiramente defina a classe Candidato
depois use Vector de candidato :slight_smile:

simples, se tu tem um atributo array do tipo

private Candidato [] array;

tu pode ter um setArray() q recebe um array de Candidato e atribui a referencia:

[code]public void setArray( Candidato [] c ) {

array = c;
}[/code]

agora, se oq tu quer é ter um método q adicione objetos nesse array, use uma collection, por ex, ArrayList:

[code]import java.util.ArrayList;

class Coligacao {

private String nomeColigacao;
private int votosColigacao, numeroVagas;
private ArrayList lista = new ArrayList();

public void addCandidato( Candidato c ) {

   lista.add( c );

}
} [/code]

vlw ae, matheus… era esse negoco de ArrayList q tava bem ligado…
mas agora consegui terminar a classe Coligacao, e agora minha mini eleicao ta quase pronta

vlw
flw

eu ainda sou mais a clase vector :slight_smile:
alem de ela desponibilizar direto a adciçao de mais 10 a cada 10 indices que voce adiciona :slight_smile:

prefiro ArrayList por nao ser sincronizado como Vector, não tendo assim uma perda de desempenho (dificilmente notavel)… prefiro Vector qnd estiver trabalhando com Threads concorrentes

Oi… pessoal!!

Só complementando o que o Matheus disse… :grin:

A respeito de performance…
Java oferece várias classes de coleção para armazenar obejtos… a classe Vector é uma coleção desse tipo!
muitos programadores usam Vector como default para coleções simples, porque é muito fácil e conveniente de usar…

já um Array difere de um Vector de várias formas…a principal diferença entre eles é o desempenho…

o seguinte código utiliza um Array e um Vector:

public void iterarArray(int[] ar)
{
  int tamanho = ar.length;
  int j;
  for(int i=0; i < tamanho; i++)
  j = ar[i]

}
public void iterarVector(Vector vec)
{
  int tamanho = vec.size();
  Object j;
  for(int i = 0; i < tamanho; i++)
  j = vec.get();
}

esses dois códigos simplesmente percorrem um Array e um Vector…apenas um exercicio de velocidade de comparação entre Arrays e Vector.!

vc pode descobrir que a implementação do Array é mais rápida… o método iterarArray é 40 vezes mais rápido do que o método iterarVector

o método iterarVector é ainda mais lento se vc usar Enumeration ou Iterator para atravessar…

a grande diferença no desempenho entre Arrays e Vector ocorre porque:

-> os métodos get de Vector é SYNCHRONIZED…
-> o uso de Vector requer chamadas de método…

:arrow: sempre que vc criar um Vector, o código cria um array para o armazenamento !

:arrow: como o matheus disse, outra classe que podemos considerar para usar no lugar de Vector é o ArrayList…

:arrow: ArrayList não é nada menos que um Vector não sincronizado… ou seja, muito mais rápido do que do que o Vector…

os códigos anteriores , modificados com um ArrayList:

public void iterarArrayList(ArrayList al)
{
  int tamanho = al.size();
  Object j;
  for(int i = 0; i < tamanho; i ++)
  j = al.get(i);
}

:arrow: esse código com ArrayList é quatro vezes mais rápido do que o Vector, mas o Array é ainda 11 vezes mais rápido do que o ArrayList

:wink: