elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:51  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Consulta sobre los map JAVA
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta sobre los map JAVA  (Leído 534 veces)
DonVidela


Desconectado Desconectado

Mensajes: 1.617



Ver Perfil WWW
Consulta sobre los map JAVA
« en: 18 Enero 2012, 19:35 »

La cosa es que tengo el siguiente metodo en java
Código
  public String getJson() throws JSONException {
 
       JSONArray eventos = new JSONArray();
       Date fecha = new Date();
       JSONObject json = new JSONObject();
   //    JSONObject jsondos = new JSONObject();
       json.put("title", "prueba desde MB 1");
       json.put("start", fecha.toGMTString());//"2012"+"-"+fecha.getMonth()+1+"-"+fecha.getDay()+1
 
       eventos.put(json);
 
       json.clearAll();
 
       json.put("title", "Otro objeto");
       json.put("start", fecha.toGMTString());
       eventos.put(json);
     //  json.clearAll();
       System.out.println("Desde JSON : " + eventos.toString());
 
       return eventos.toString();
   }

La pregunta es porque al borrar todo del map no lo ingresa al otro map siendo que lo ingrese primero y despues elimine los objetos del primer map, no debio haberlos guardado primero y despues eliminado, pero no pasa esto, se borran todos.

Si lo hago con un ArrayList, estoy seguro que funcionaría pero mi pregunta es, porque no funciona con un map?


En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery

http://pablovidela.wordpress.com
Proteus1989

Desconectado Desconectado

Mensajes: 143



Ver Perfil WWW
Re: Consulta sobre los map JAVA
« Respuesta #1 en: 19 Enero 2012, 00:48 »

No se exactamente lo que preguntas pero lo que he visto es que el objeto json que insertas en evento es el mismo 2 veces.
Recuerda que java es todo dinámico. Lo que estás pasandole a eventos cuando haces eventos.put(json) es lo un puntero al objeto.

No se si esa era tu duda porque la verdad es que no se cual es el map en ese código... No se como funcionará internamente JSONArray.


En línea
DonVidela


Desconectado Desconectado

Mensajes: 1.617



Ver Perfil WWW
Re: Consulta sobre los map JAVA
« Respuesta #2 en: 19 Enero 2012, 14:56 »

No se exactamente lo que preguntas pero lo que he visto es que el objeto json que insertas en evento es el mismo 2 veces.
Recuerda que java es todo dinámico. Lo que estás pasandole a eventos cuando haces eventos.put(json) es lo un puntero al objeto.

No se si esa era tu duda porque la verdad es que no se cual es el map en ese código... No se como funcionará internamente JSONArray.

Mi pregunta es porque al insertar el objeto ya creado y despues lo elimino despues de insertar, se borra completamente en donde lo inserte.

Debio haberse borrado solo el primer objeto, no donde lo inserte nuevamente.
En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery

http://pablovidela.wordpress.com
Proteus1989

Desconectado Desconectado

Mensajes: 143



Ver Perfil WWW
Re: Consulta sobre los map JAVA
« Respuesta #3 en: 19 Enero 2012, 15:32 »

Pues eso es exactamente lo que te he explicado antes. En java TODO ES DINAMICO y funciona con punteros.

Cuando te creas el json te creas una zona de memoria referenciada por un puntero (llamado json). Cuando tu haces eventos.put(json) no haces una copia de esa memoria y se guarda dentro de eventos, sino que eventos lo único que guarda es el puntero que apunta a esa zona de memoria que creastes en un principio. Por eso cuando haces el json.clearAll() afecta directamente al eventos.

Lo que en realidad estás haciendo es guardar dos punteros que apuntan a la misma zona de memoria.
Para arreglarlo en lugar de json.clearAll(); haz un json = new JSONObject();


Saludos y lo siento si no me he explicado bien
En línea
DonVidela


Desconectado Desconectado

Mensajes: 1.617



Ver Perfil WWW
Re: Consulta sobre los map JAVA
« Respuesta #4 en: 19 Enero 2012, 15:57 »

Pues eso es exactamente lo que te he explicado antes. En java TODO ES DINAMICO y funciona con punteros.

Cuando te creas el json te creas una zona de memoria referenciada por un puntero (llamado json). Cuando tu haces eventos.put(json) no haces una copia de esa memoria y se guarda dentro de eventos, sino que eventos lo único que guarda es el puntero que apunta a esa zona de memoria que creastes en un principio. Por eso cuando haces el json.clearAll() afecta directamente al eventos.

Lo que en realidad estás haciendo es guardar dos punteros que apuntan a la misma zona de memoria.
Para arreglarlo en lugar de json.clearAll(); haz un json = new JSONObject();


Saludos y lo siento si no me he explicado bien

De hecho asi lo habìa solucionado, te explicaste a la perfección gracias por tu respuesta, no encontre otra solucion xD
Saludos!
En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery

http://pablovidela.wordpress.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta MySQL y JAVA
Java
luisalb 6 8,205 Último mensaje 28 Octubre 2008, 04:07
por luisalb
Java + Mysql consulta lenta
Java
rigoxls 3 2,665 Último mensaje 16 Agosto 2009, 03:35
por rigoxls
una consulta para conocedores de VB2005 Y JAVA
Programación General
DiTeN 7 1,432 Último mensaje 6 Enero 2010, 23:02
por DiTeN
Consulta sobre Comunicacion entre java y javascript
Desarrollo Web
‭‭‭‭jackl007 0 1,843 Último mensaje 12 Abril 2010, 16:39
por ‭‭‭‭jackl007
Documento de consulta Java en español
Java
axiul13 1 301 Último mensaje 31 Marzo 2012, 19:32
por sapito169
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines