Dúvida manipulando Vector e Hashtable!

3 respostas
S

ae galera estou com o seguinte problema!
eu tenho um:

Hashtable dados

que está preenchido com alguns valores, dentre eles um Vector de Hashtables, que no caso seria :

(Vector)dados.get("itensContagem");

existe um momento em que vou manipular esses dados de itensContagem, vou chegar a alteralos, mais nao quero que ele seja alterado. então pensei em criar um novo objeto ou mudar a referência do mesmo, mais nao tive sucesso.

tentei algo do tipo:

Vector dadosCont = new Vector();
dadosCont = (Vector)dados.get("itensContagem");

adicionarDiferencaItem(dadosCont,(Vector)dados.get("itensRecontagem"));

ou

Vector dadosCont = new Vector();
dadosCont.add((Vector)dados.get("itensContagem"));
adicionarDiferencaItem(dadosCont,(Vector)dados.get("itensRecontagem"));

mesmo das duas formas, o que eu adicionar em dadosCont vai ficar em dados.get(“itensContagem”).

resumindo:
quero que perca a referencia pra que eu possa alterar um sem que o outro sofra as alterações.

o que eu estou fazendo errado ?
t+

3 Respostas

BrunoBastosPJ

Objetos da API Collection guardam a referência ao objeto no heap, por isso quando você altera um Hashtable que está referenciando outro Hashtable ele altera o valor do objeto. Existe um método chamara clone se não me engano, nunca usei e não tenho ideia de como usar, mas você pode tentar usar ele. Seria o caso de testar algo do tipo

Hashtable hashClone = (Hashtable)myHash.clone();
 //aqui você modifica o hashClone depóis faz 2 chamadas a mesma chave nos 2 objetos e ve se os valores são os msm ou são diferentes
S

vlw pela força mais ainda assim, é alterado os 2, alguem mais tem alguma dica ?

S

alguem sabe como que eu vou tirar a referencia desse danado ?

Criado 19 de setembro de 2006
Ultima resposta 22 de set. de 2006
Respostas 3
Participantes 2