Question

Je dois avoir une classe UserProfile qu'il est juste que, un profil d'utilisateur. Ce profil utilisateur a des données utilisateur vitales bien sûr, mais il faut aussi avoir des listes de messages envoyés par les amis de l'utilisateur.

Je dois enregistrer ces messages dans LinkedList, ArrayList, HashMap et TreeMap. Mais seulement un à la fois et ne pas dupliquer le message pour chaque structure de données. En gros, quelque chose comme un type de variable dynamique où je pouvais choisir le type de données pour les messages.

Est-ce, en quelque sorte, possible en Java? Ou ma meilleure approche est quelque chose comme ça ? Je veux dire, ai 2 classes différentes (pour le profil utilisateur), celui où je serai l'hôte des messages comme Map<K,V> (puis-je utiliser HashMap et TreeMap où de façon appropriée) et une autre classe où je les accueillent comme List<E> (puis-je utiliser LinkedList et ArrayList où de façon appropriée). Et probablement utiliser une super classe pour le UserProfile donc je n'ai pas de dupliquer les variables et les méthodes pour les champs tels que les données, âge, adresse, etc ...

Toutes les pensées?

Était-ce utile?

La solution 3

Je fini par utiliser ce que je décrit le premier message:

  

Est-ce, en quelque sorte, possible en Java? Ou   ma meilleure approche est quelque chose comme   cette? Je veux dire, ai 2 classes différentes   (Pour le profil d'utilisateur), une I où   accueillir les messages que la carte (et   puis-je utiliser HashMap et TreeMap où   de façon appropriée) et une autre classe où   Je les accueillent comme une liste (puis-je utiliser   LinkedList et ArrayList où   de façon appropriée). Et probablement utiliser un   super classe pour la UserProfile donc je   ne pas dupliquer les variables et   méthodes pour des domaines tels que les données, l'âge,   adresse, etc ...

Autres conseils

Tout d'abord, vous n'êtes pas dupliquer un message en ajoutant à différentes collections en même temps - vous stocker seulement distincts références pour le même objet. (Eh bien, à moins qu'un message est représenté comme un type primitif, comme long ... mais ceux-ci ne peut pas être ajouté aux collections de toute façon.)

Pourquoi ne pas avoir toutes ces collections dans le même UserProfile? Cela vous permettra de messages d'accès par clé ou index, et itérer à travers eux comme vous le souhaitez.

LinkedHashMap pourrait également une option intéressante pour vous, car elle garantit ordre d'itération, d'une manière qu'il se comporte comme une liste concernant l'itération, tout en étant une carte. En fin de compte, cela se résume à la façon dont vous voulez accéder aux messages d'un utilisateur donné, que vous ne l'avez pas détaillé.

Mise à jour: @Snake, vous ne pouvez stocker des références à des objets dans les collections Java. ainsi une valeur de long primitive ne peut être stockée directement, uniquement par la conversion à un objet Long premier. Notez que depuis Java5, cette conversion peut être due implicite autoboxing, de sorte que vous ne voyez pas dans le code, mais il arrive encore quand même -. Par exemple

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 c'est un projet universitaire, alors je pense que ce que vous êtes censé faire est la suivante:

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

Comme indiqué ci-dessus, l'ajout d'un objet à une collection ne double pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top