Vetor de vetores

6 respostas
D

Falae galera, to com um problema q parecia ser facil mas to preso nele a uma semana. Eu tenho uma classe q faz consulta num banco, ela tem um vetor q chama um metodo q devolve outro vetor q seria uma linha da tabela formando assim um vetor de vetores.
Uma outra classe recebe esse vetor de vetores pra adicionar a linha na tabela, ae eu faço isso(linha é o vetor devolvido pela outra classe):

for(int c=1; c<=linha.size(); c++) {
  senhas.addRow( linha.get(c) );
}

//Aqui o erro é:
cannot resolve symbol
symbol  : method addRow (java.lang.Object)
location: class javax.swing.table.DefaultTableModel
senhas.addRow( linha.get(c) );

ou

for(int c=1; c<=linha.size(); c++) {
  Vector linha2 = new Vector();
  linha2 = linha.get(c);
  senhas.addRow(linha2);
}

//Aqui o erro é esse:
incompatible types
found   : java.lang.Object
required: java.util.Vector
linha2 = linha.get(c);

…imaginando q ele pegaria um elemento, q seria um vetor, e adicionaria na tabela mas nunca da certo. Alguem poderia dizer o pq?
8O :???:

6 Respostas

H

Se você precisa passar um Vector então faz um Cast

for(int c=1; c<=linha.size(); c++) { senhas.addRow((Vector) linha.get(c) ); }

ou

for(int c=1; c<=linha.size(); c++) { Vector linha2 = (Vector)linha.get(c); senhas.addRow(linha2); }

D

Putz, perfeito, valeu Heber. Aproveitando, ja tinha visto esse cast antes, quando eu tenho q usar ele?
:grin: :grin:

V

Sempre que quiser especificar um pouco mais qual é o tipo do objeto (ou variável) que você espera retornar. Ou seja, nesse caso você espera um Vector. Mas o método get retorna um Object (suponho). Todo Vector é um Object, o que significa que pode ser retornado sem problemas pelo método get. Mas você precisa de pesquisar o vetor, obter elementos, etc. Por isso, um object não é suficiente para você. Então você precisa declarar explicitamente que o Object que você recebeu é um Vector. :wink:

Dica: Não use Vector. Use Arraylist, pois é muito mais eficiente!

D

Valeu, vo tentar o ArrayList pra ver como fica.

:wink:

R

“vinci”:

Dica: Não use Vector. Use Arraylist, pois é muito mais eficiente!

por curiosidade, por que diz isso?

M

o ArrayList proporciona iteração e acesso aleatóriocom rapidez… o Vector é basicamente igual ao ArrayList, mas os métodos de Vector são sincronizados pra segurança de segmentos, normalmente é preferivel usar um ArrayList a q um Vector, uma vez q os metodos sincronizados causam impacto no desempenho q pode ser desnecessário…

Criado 23 de julho de 2004
Ultima resposta 24 de jul. de 2004
Respostas 6
Participantes 5