FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas al extraer un elemento de ArrayList, se modifica solo???
Hola a todos, estoy haciendo un programa en el que necesito crear un vector de ArrayList. Lo que hice fue crear una clase llamada cosaContainer que tiene un arrayList y dos metodos(Add y Get), que se encargan de incluir y regresarme el valor de arrayList en un indice dado. Los objetos que almaceno en cosaContainer son de tipo "cosa. "Cosa" tiene un entero y 2 metodos: crea, y vecino, este ultimo metodo, multiplica el entero por 2.
Lo que yo necesito es crear una primera instancia cosa y almacenarla en el cosaContainer y después extraer ese objeto y con él llamar a la función vecino, para agregar al vecino a mi cosaContainer. ¿Me explico? El problema es que al extraer del arrayList() el objeto padre( por asi decirlo), modifica también mi objeto original. Es decir si tengo el array[2,4] y pido el primer valor del array para aplicarle el método vecino, que solo hace la multiplicacion ( v=get(0) ; v.vecino me hace esto v=4 y el vector[4,4]. ¿Me explico? ¿Como puedo hacer para que no me modifique el valor ORIGINAL del arrayList?Les pongo mi codigo. GRACIAS -------------------------------------------------------------------------------------------------------------------- public class cosa { int numO; public void vecino() { this.numO = this.numO * 2; } public cosa crea() { Random r = new Random(); numO = r.Next(10); return this; } } ----------------------------------------------------------------------------------------------------------------------------- public class solutionContainer { public int count; public ArrayList list= new ArrayList(); public solutionContainer() { list = new ArrayList(); count = 0; } public void add(cosa s) { list.Add(s); list[count] = s; count++; } public cosa Get(int index) { Array nlist = (Array)list.ToArray().Clone(); return (cosa)nlist.GetValue(index); } ---------------------------------------------------------------------------------------------------------- //Creo mi arreglo solutions = new solutionContainer[5]; for (int j = 0; j < 5; j++) solutions[j] = new solutionContainer(); //Creo los primeros valores de cosa y los almaceno en mi vector cosa s=new cosa(); for (int j = 0; j < 5; j++){ Random r = new Random(); s = s.crea(); solutions[j].add(s); } //Creo el vecino y me modifica el OBJETO ORIGINAL!!!!!! for (int j = 0; j < 5; j++) { s = solutions[j].Get(0); s.vecino(); solutions[j].add(s); } |
#2
|
||||
|
||||
En .Net ¿no existe el TList y TObjectList?
Esas 2 clases ya incorporan lo que estas haciendo, te puede ser más libiano. De todas formas, intentando ayudar sin tener demasiada experiencia en C. Quizás el problema esté aquí: Creo que ahí estás devolviendo un puntero, por ello te modifica el original. La primera línea no la entiendo, parece que clonas el array, pero lo que deberías clonar sería el "cosa" Por cierto, la clase cosa, más abstracta no puede ser, ¿no había otro nombre para darle? Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problema con ArrayList | reina | JAVA | 5 | 08-05-2012 23:10:32 |
Problemas para deseleccionar un elemento de un listbox | neon | OOP | 5 | 19-08-2011 16:00:18 |
Extraer solo el nombre de un archivo sin su extencion | coyule | API de Windows | 2 | 13-01-2007 04:12:01 |
ArrayList | YaninaGenia | .NET | 2 | 12-06-2006 19:53:58 |
Extraer solo nombre de archivo y extensión | JODELSA | Varios | 11 | 13-07-2005 15:04:09 |
|