Como acessar os variaveis de um objeto armazenado num Vector
7 respostas
G
GlaucoCardoso
Pessoal,
Precisei criar uma classe interna que contem duas variaveis. Decidi então instanciar um objeto dessa classe, atribuir valores e ir armazenando num Vector.
As variáveis dessa classe interna são um (int) id e um (String) texto. Ou seja, o id está relacionado com o texto, em cada posicão do Vector.
Agora eu nao consigo comparar um novoId recebido com o id de dentro do Vector. Não consigo acessar a estrutura do Vector e comparar.
em C seria:
If ( vetor.estrutura.id == novoId )
...
Mas e em Java?
Outra:
Supondo que se consiga essa comparação, como pegar o texto (String) associado a esse id ?
Espero ter sido claro,
Obrigado a todos,
Glauco.
privateStoredDatadados=newStoredData();privateVectorvdados=newVector();dados.textLoaded=text;// text recebidodados.idText=++idTextoOnServer;// novo id recebidovdados.add(dados);privateclassStoredData{privateStringtextLoaded;privatelongidText;}
valeu mtosatti, mas vc poderia me explicar o que significa esse operador : quando vc usa
StoredData data : vdados
obrigado,
Glauco.
javaBeats
Este ‘for’ é o chamado ‘for each’, pois faz a iteração entre todos os elementos do vetor, na ordem em que eles se apresentam. Serve para diversas collections, e também vetores.
Lê-se “para cada StoredData em vdados…”
Rodrigo
G
GlaucoCardoso
Obrigado pela dica Rodrigo.
StoredData dados = new StoredData();
for (StoredData data : vdados) { if( data.getIdText() == novoId){
// nao seria StoredData dados : vdados …?
outra pergunta: como eu faço pra remover o elemento desse vector que é igual a novoId?
(remover o objeto).
Obrigado!
dudaskank
Para isso, esse for acho que não serve, você vai precisar usar um iterador. Recomendo dar uma olhada no tutorial de collections aqui
flw
javaBeats
Isso mesmo, para remover durante a iteração, só usando Iterator mesmo, através do método remove().
Iterator< StoredData > it = vados.iterator(); // ou outro método q retorne iteratorwhile(it.hasNext()){
StoredDatasd=it.next();sd.fazAlgumaCoisaComOObjeto();it.remove();
};
Vale lembar que o "enhanced for" só serve para Collections de tipo definido, e vetores. Se a Collection não tiver o tipo definido com generics, vc ainda pode usar o for each, mas vai ter de referenciar cada objeto como sendo do tipo Object.