Pregunta

Es necesario disponer de una clase UserProfile que es sólo eso, un perfil de usuario. Este perfil de usuario tiene algunos datos de usuario vitales, por supuesto, pero también tiene que tener una lista de los mensajes enviados desde los amigos del usuario.

necesito para salvar estos mensajes en LinkedList, ArrayList, HashMap y TreeMap. Pero sólo uno a la vez y no duplicar el mensaje para cada estructura de datos. Básicamente, algo así como un tipo variable dinámica en el que podía escoger el tipo de datos para los mensajes.

Es esto, de alguna manera, es posible en Java? O mi mejor enfoque es algo como esto ? Es decir, tengo 2 clases diferentes (para el perfil de usuario), uno en el que el anfitrión de la mensajes como Map<K,V> (y luego Yo uso HashMap y TreeMap donde apropiadamente) y otra clase en la que los acogen como List<E> (y luego Yo uso LinkedList y ArrayList donde apropiadamente). Y, probablemente, utilizar una superclase para la UserProfile así que no tengo que duplicar variables y métodos para los campos de datos como, edad, dirección, etc ...

¿Alguna idea?

¿Fue útil?

Solución 3

Terminé usando lo que he descrito en el primer mensaje:

Es esto, de alguna manera, es posible en Java? O mi mejor enfoque es algo así como ¿esta? Quiero decir, tengo 2 clases diferentes (Para el perfil de usuario), uno donde sede de los mensajes como mapa (y Luego utilizo HashMap y donde TreeMap apropiadamente) y otra clase donde Yo les hospedante, según la lista (y el uso entonces LinkedList y ArrayList donde adecuadamente). Y, probablemente, utilizar una superclase para la PerfilUsuario así que no tienen que duplicar las variables y métodos para campos como los datos, la edad, dirección, etc ...

Otros consejos

En primer lugar, usted no está duplicando un mensaje añadiéndolo a diferentes colecciones a la vez - sólo se almacena distinta referencias para el mismo objeto. (Bueno, a menos que un mensaje se representa como un tipo simple como long ... pero estos no se puede añadir a las colecciones de todos modos.)

Por qué no puedes tener todas esas colecciones dentro de la misma PerfilUsuario? Esto le permitiría a los mensajes de acceso por índice o clave, e iterar a través de ellos cualquier forma que desee.

LinkedHashMap poder también ser una opción interesante para usted, ya que garantiza iteración orden, por lo que en cierto modo se comporta de manera similar a una Lista con respecto iteración, sin dejar de ser un mapa. En última instancia, todo se reduce a cómo desea acceder a los mensajes de un usuario determinado, que no ha detallado.

Actualización: @Snake, sólo se puede almacenar referencias a objetos en colecciones de Java. Un valor long primitiva por lo tanto no se puede almacenar directamente, sino sólo mediante la conversión a un objeto Long primero. Tenga en cuenta que ya Java5, esta conversión puede ser debido a autoboxing implícita, por lo que no se ve en el código, pero todavía sucede, sin embargo, -. Por ejemplo

List<Long> list = new ArrayList<Long>();
list.add(1L); // the primitive value is boxed into a Long object,
              // which is then added to the list
long value = list.get(0); // the value of the Long object in the list is outboxed
                          // and assigned to the primitive variable

Si se trata de un proyecto universitario, entonces sospecho que lo que están destinados a hacer es la siguiente:

Collection mycoll;
mycoll = new ArrayList();
for (Message m:message) {
  // do stuff and measure the performance
}
// do other stuff and measure the performance
mycoll = new LinkedList();
// do the same stuff as a above and measure the performance again
mycoll = new HashMap();
//... and so on

Como se ha señalado anteriormente, la adición de un objeto a una colección que no duplica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top