ArrayList clonando tudo! - Resolvido

Estou com problemas em adicionar objetos ao ArrayList.
Consigo adicionar os objetos mas toda vez que adiciono um objeto novo o objeto anterior é subtituido pelo novo objeto.
No programa exemplo abaixo é gerado três arrays com valores aleatórios que são adicionados ao ArrayList, após adicionar o ultimo array vejo que todos os três arrays estão iguais ao ultimo!

[code]import java.util.ArrayList;
import java.util.Arrays;

public class ProblemaComArrayList {
public static void main(String args[]) {
ArrayList quardaArrayList = new ArrayList();
int array[] = new int[5];
int indexDoArray = 0;
Start(array, quardaArrayList, indexDoArray);
}

public static void Guarda(int array[], ArrayList quardaArrayList,
		int indexDoArray) {
	Arrays.sort(array);
	quardaArrayList.add(array);//Onde foi que eu errei!?
}

public static void Imprimir(int array[], ArrayList quardaArrayList, int indexDoArray) {
	int recuperador[] = (int[]) quardaArrayList.get(indexDoArray);
	for (int index = 0; index < array.length; index++) {
		System.out.print("[" + recuperador[index] + "]");
	}
	System.out.println(indexDoArray);
}

public static void Gerador(int array[]) {
	for (int index = 0; index < array.length; index++) {
		array[index] = (1 + (int) (Math.random() * 9));
	}
}

public static void Start(int array[], ArrayList quardaArrayList,
		int indexDoArray) {
	int vezes = 3;
	ProblemaComArrayList criar = new ProblemaComArrayList();
	for (int index = 0; index < vezes; index++) {
		criar.Gerador(array);
		criar.Guarda(array, quardaArrayList, indexDoArray);
		criar.Imprimir(array, quardaArrayList, indexDoArray);
		indexDoArray++;
	}
	System.out.print("################");
	System.out.println();
	indexDoArray = 0;
	for (int index = 0; index < vezes; index++) {
		criar.Imprimir(array, quardaArrayList, indexDoArray);
		indexDoArray++;
	}
}

}[/code]
Porque o ultimo objeto adicionado ao ArrayList se alto copia para os valores anteriores?

Cara foi difícil entender o que você quer, mas vamos lá. Você está passando um Array para um método, ou seja, você está passando a referencia dele, ou seja, o teu List possui 3 objetos, apontando para a mesma referência do array que armazena os números gerados. Solução, sempre que for gerar um novo conjunto de números, criar um novo array. Outra, havia parâmetros a mais, e desnecesários. Não havia necessidade de criar tantos métodos estáticos.

Sugestão, compare os códigos:

package com.thiago.main; 

import java.util.ArrayList;
import java.util.Arrays;
 
 public class Teste {
	 
 	public static void main(String args[]) {
 		Teste t = new Teste();
 		ArrayList guardaArrayList = new ArrayList();
 		t.start(guardaArrayList);
 	}
 
 	public void guarda(int array[], ArrayList quardaArrayList,
 			int indexDoArray) {
 		Arrays.sort(array);
 		quardaArrayList.add(array);//Onde foi que eu errei!?
 	}
 
 	public void imprimir(ArrayList quardaArrayList) { 		
 		for (int index = 0; index < quardaArrayList.size(); index++) {
 			int[] temp = (int[]) quardaArrayList.get(index);
 			for (int j = 0; j < temp.length; j++) {
 				System.out.print("[" + temp[j] + "]");
 			}
 			System.out.print(index + "\n");
 		} 		
 	}
 
 	public void gerador(int array[]) {
 		for (int index = 0; index < array.length; index++) {
 			array[index] = (1 + (int) (Math.random() * 9));
 		}
 	}
 
 	public void start(ArrayList quardaArrayList) {
 		int vezes = 3;
 		
 		for (int index = 0; index < vezes; index++) {
 			int[] array = new int[5];
 			this.gerador(array);
 			this.guarda(array, quardaArrayList, index); 			
 		}
 		this.imprimir(quardaArrayList);
 		System.out.print("################");
 		System.out.println();

		this.imprimir(quardaArrayList); 			
 	}
 }

Valeu pela ajuda!

Ainda estou analizando o código. Faz um bom tempo que não pratico Java e nem outra linguagem. :XD: