Problema com Vector

Salve galera!!

Estou tendo o seguinte problema quando utilizo o Vector, primeiro declarei uma variavel chromosome como Vector:

Vector<Integer> chromosome = new Vector<Integer>();

Em seguida atribuo um valor nesse vector através de um ArrayList:

chromosome = (Vector<Integer>) newPopulation
							.getChromosome(i);

Onde, newPopulation eh um ArrayList de Object, portanto quando eu chamo o getChromosome(i), ele me retorna um Object, por isso a necessidade de um casting. Mas o problema vem agora

for (int pos = indexC1 + 1; pos <= indexC1+ subProgram - 1; pos++) {
				chromosome.set(pos, auxChromosome.get(posAuxChromo));
			        posAuxChromo++;
		}

Quando dou um set no Vector chromosome, ele atualiza tambem o object que esta no ArrayList onde foi feito a atribuição para o meu chromosome. Não entendo pq ele faz isso, parece que ambos (Vector chromosome e o ArrayList newPopulation) compartilham a mesma posição de memória.

Galera me ajudem se possível!!!

Abraços,
Danilo

Ou seja, você na verdade está copiando uma referência e não o vetor inteiro. Isso é Java Básico: você não consegue copiar objetos com o sinal de “=”, e sim suas referências. Se você precisa de uma cópia que é independente do valor original você precisa clonar o tal objeto se possível, ou então usar algum método que faça a cópia para você.

Origado pelo retorno thingol!!!

Então o modo mais elegante de se implementar seria clonando o ArrayList? para isso devo implementar a classe Cloneable?

Abraços,
Danilo

Não sei se é o jeito mais elegante. Só sei que você está tendo problemas de conceito.