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++;
}
}
}
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!
Porque o ultimo objeto adicionado ao ArrayList se alto copia para os valores anteriores?
2 Respostas
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:
Criado 7 de fevereiro de 2007
Ultima resposta 7 de fev. de 2007
Respostas 2
Participantes 2