Foros del Web » Programación para mayores de 30 ;) » Java »

ayuda con ArrayList y Object

Estas en el tema de ayuda con ArrayList y Object en el foro de Java en Foros del Web. buenas, tiempo sin pasearme por aca, una preguntica: estoy almacenando objetos (digamos de la clase X) en un arraylist, tengo entendido que el metodo get() ...
  #1 (permalink)  
Antiguo 16/05/2005, 16:34
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
ayuda con ArrayList y Object

buenas, tiempo sin pasearme por aca, una preguntica:

estoy almacenando objetos (digamos de la clase X) en un arraylist, tengo entendido que el metodo get() del arraylist devuelve objetos del tipo Object, existe alguna forma de que con un nuevo objeto X pueda copiar o "clonar" o mejor dicho, es esto:

Código:
objetodeX = arraylist.get(0)
posible? por supuesto que los elementos "adentro" del array list son del tipo X...

gracias por cualquier respuesta!
  #2 (permalink)  
Antiguo 16/05/2005, 17:51
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
no se si no me respondieron por lo estupida que es la pregunta, no me di cuenta sino hasta ahora, aca esta la respuesta por si acaso:

objetodeX = (X)arraylist.get(0)
  #3 (permalink)  
Antiguo 23/05/2005, 16:18
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
bueno para no iniciar un nuevo thread decidi revivir este.. a ver

sinceramente, estoy convencido de que java es una porqueria, pero es solo mi opnion o soy un ignorante para manejarlo... c++ es lo maximo.

ahora estoy con un arraylist de enteros, osea algo asi:

Código:
 ArrayList X = new ArrayList() ;
X.add(new Integer(5));
y para importarlos, hago lo que ven un poco mas arriba, y con un int hago un .intValue() y ya... el problema es, que el dato en el araylist no lo puedo modificar, asi sea (ya enlazado en Integer al arraylist)
Código:
ArrayList X = new ArrayList() ;
Integer Entero;
int ent;
X.add(new Integer(5));
Entero = (Integer)X.get(0);
ent = Entero.intValue();
ent++;
Entero = new Integer(ent); //aqui no deberia actualizar automaticamente el arraylist???
muchachos de verdad necesito esta ayuda, denme un poco de luz... gracias
  #4 (permalink)  
Antiguo 23/05/2005, 16:27
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
No, las clases de envoltura o wrapers de tipos básicos (Integer->int, Character->char, etc) no permiten modificar los datos, al menos hasta jdk1.4. En el 1.5 han cambiado muchas cosas.
Lo que tienes que hacer es montarte tú una clase simplísima:
Código:
class MiInteger {
  private int _num;
  MiInteger(int num){ _num = num; }
  int get(){ return _num; }
  void set(int num){ _num = num; }
}
Y utilizar esa clase en lugar de Integer.
En cuanto a lo que decías de Java, yo también considero que es una basura, pero por cosas de la vida es de lo que más sé. Aquí en mi antigua web escribí un artículo sobre el JDK1.5 Quizá te interese: http://www.caerolus.com/informatica/...o/ver.php?id=4
__________________
Mi página personal: Julián Urbano
  #5 (permalink)  
Antiguo 23/05/2005, 16:39
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
en el 1.5 se puede hacer esto con Integer?
  #6 (permalink)  
Antiguo 23/05/2005, 16:52
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
En el enlace que te puse de mi página, mira el apartado de Conversiones Implícitas. Se supone que con una simple igualación valdría. No sé, yo de 1.5 mayormente nada
__________________
Mi página personal: Julián Urbano
  #7 (permalink)  
Antiguo 23/05/2005, 16:54
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
no bueno, pero no de conversiones, sino de guardar el dato en el arraylist, una vez obtenido y modificado aparte... como lo "actualizo" ?
por que con "objetos personalizados" si funciona.. o eso era lo que querias decir con hacer mi propia clase?
  #8 (permalink)  
Antiguo 23/05/2005, 16:58
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Sí, a eso me refería. He revisado el API de Integer en 1.5 y no he visto nada. No sé, te tocará hacer eso. Un profesor nos dijo que teníamos que hacer eso porque las wraper no tienen métodos set, sólo get. Yo le creo, era un gran hombre
__________________
Mi página personal: Julián Urbano
  #9 (permalink)  
Antiguo 23/05/2005, 17:19
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
bueno gracias caerolus, vamos a ver que se hace. quiero que sepas que comparto tu idea, java es nada y c su complemento, osea todo. :)
  #10 (permalink)  
Antiguo 23/05/2005, 17:35
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Mmmm, sin llevarlo al extremo. C tiene muchísimas carencias, suplidas por c++ sí.
Para que me entiendas mejor, a mí me gusta programar en Java y el API de java he dedir que es muuuuuy bueno EN CUANTO A DISEÑO, pero mucho. Ahora bien, los problemas no vienen de ahí, sino de la JVM principalmente. La mitad de novedades en el 1.5 son patrañas, y sigue el modelo de OO de tantos otros cohetáneos suyos: no permitir herencia múltiple. He de decir que entiendo y comparto las razones por las que se suprimió, pero también he de decir que allá cada uno con lo que hace y cómo lo hace. Los problemas que da la herencia múltiple son ni más ni menos que problemas de diseño, nada más.
__________________
Mi página personal: Julián Urbano
  #11 (permalink)  
Antiguo 24/05/2005, 01:40
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Código:
ArrayList X = new ArrayList() ;
Integer Entero;
int ent;
X.add(new Integer(5));
Entero = (Integer)X.get(0);
ent = Entero.intValue();
ent++;
Entero = new Integer(ent); //aqui no deberia actualizar automaticamente el arraylist???
Simplemente, no actualiza el dato porque tu estas creando otra instancia de tipo Integer en el apuntador Entero.

Eso no funciona ni en java, ni en c. Y decir que java es una porqueria, si es un poco de ignorantes.

saludos
  #12 (permalink)  
Antiguo 24/05/2005, 05:23
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
De ignorantes o de los que llevamos varios años tratando casi todos los días con él
__________________
Mi página personal: Julián Urbano
  #13 (permalink)  
Antiguo 24/05/2005, 08:16
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
estas equivocado al decir que esto no funciona en c. tal vez no de la misma manera, pero con datos dinamicos c>java.
  #14 (permalink)  
Antiguo 24/05/2005, 08:54
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Cita:
Iniciado por Jose2k
estas equivocado al decir que esto no funciona en c. tal vez no de la misma manera, pero con datos dinamicos c>java.
Si tu en C, en un contenedor, ya sea un array, vector, deque o lo que kieras, tienes clases de tipo X. y la sacas a un apuntador. Lo que haces es que ese puntero apunta a la clase que esta en el contenedor. Pero si luego a ese puntero le haces un new X, pos ya esa clase no apunta mas al del contenedor, y por eso aunque cambies logo el objeto no cambiaras el del contenedor.

Otra cosa es que tu una vez sacado el objeto mediaten un setter le cambies un propiedad, entonces si cambiara el del contenedor.

Pero lo que tu has implementado en el ejemplo era el primer caso. Tb es ciertpo que los wrappers no aceptan modificacion de datos, ya que su propiedad es final. Pero creando una clase que empaquete esto se soluciona el problema.

Ahora diras, c lo hace automatico. Pos es verdad lo hace automatico. Pero c es un lenguaje hibrido y java es OO puro.

saludos :)

Ahh y java, en donde realmente enseña su potencial es en aplicaciones empresariales, con su standar J2EE. Microsoft no ha hecho mas que seguir la esptela de J2EE para crear .NET y su ASP.NET.
Java tenia ya mucho antes taglibs, jsps (pensar que son servlets),EJBs,....

Última edición por sanmi69; 24/05/2005 a las 10:16
  #15 (permalink)  
Antiguo 24/05/2005, 08:58
Avatar de Jose2k  
Fecha de Ingreso: junio-2003
Mensajes: 98
Antigüedad: 20 años, 11 meses
Puntos: 0
bueno sanmi, solo estaba jodiendo un poco, java no es basura, despues de todo es bueno para moviles y paginas web ;)

aunque si sigo pensando que es debil para asuntos "serios" e interaccion software/hardware, es mi opinion ;).

bueno muchas gracias por su ayuda caerolus y sanmi, saludos !
  #16 (permalink)  
Antiguo 24/05/2005, 10:19
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Hombre jejej, java para aplicaciones de escritorio es lo peor, eso todo el mundo lo sabe, pero hay que usar cada framework/lenguaje para lo que esta pensado :)

saludso
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:00.