Frage

Ich brauche eine UserProfile Klasse haben, dass es nur, dass ein Benutzerprofil. Dieses Benutzerprofil hat einige wichtigen Benutzerdaten natürlich, aber es muss auch von den Benutzern Freunden gesendet Listen von Nachrichten haben.

Ich brauche diese Nachrichten in LinkedList, ArrayList, HashMap und TreeMap zu speichern. Aber nur einen nach dem anderen und nicht duplizieren Sie die Nachricht für jede Datenstruktur. Im Grunde genommen so etwas wie eine dynamische Variablentyp, wo ich den Datentyp für die Nachrichten auswählen konnte.

Ist das irgendwie möglich in Java? Oder mein bester Ansatz ist etwas ? Ich meine, haben zwei verschiedene Klassen (für das Benutzerprofil), ein, wo ich die Nachrichten als Map<K,V> Host (und dann verwende ich HashMap und TreeMap wo angemessen) und eine andere Klasse, wo ich sie als List<E> Host (und dann verwende ich LinkedList und ArrayList wo angemessen). Und wahrscheinlich eine Superklasse für den UserProfile verwenden, so muß ich Variablen und Methoden nicht duplizieren für Felder wie Daten, Alter, Adresse, etc ...

Alle Gedanken?

War es hilfreich?

Lösung 3

ich am Ende mit, was ich auf dem ersten Beitrag beschrieben:

Ist das irgendwie möglich in Java? Oder mein bester Ansatz ist so etwas wie Dies? Ich meine, haben zwei verschiedene Klassen (Für das Benutzerprofil), ein, wo I Host die Nachrichten als Karte (und Ich HashMap und TreeMap dann verwenden, wenn entsprechend) und eine andere Klasse, wo Das Abhalten von ihnen als Liste (und dann habe ich Gebrauch LinkedList und Arraylist, wo passend). Und wahrscheinlich verwenden Superklasse für die Userprofile so I nicht duplizieren müssen Variablen und Methoden für Felder wie Daten, Alter, Adresse, etc ...

Andere Tipps

Zu allererst Sie duplizieren keine Nachricht von ihm zu verschiedenen Sammlungen zur gleichen Zeit hinzugefügt - Sie speichern nur unterschiedlich Referenzen auf das gleiche Objekt. (Na ja, es sei denn, eine Nachricht als eine primitive Art wie long dargestellt wird ... aber diese können nicht sowieso Sammlungen hinzugefügt werden.)

Warum können Sie nicht haben all diese Sammlungen innerhalb der gleichen Userprofile? Dies würde es ermöglichen Ihnen den Zugriff auf Nachrichten von Schlüssel oder Index und durchlaufen sie eine Möglichkeit, die Sie mögen.

LinkedHashMap Macht auch eine interessante Option für Sie sein, da es Iterationsreihenfolge garantiert, so in gewisser Weise ist es ähnlich wie eine Liste in Bezug auf Iteration verhält, während immer noch eine Karte zu sein. Letztlich läuft darauf hinaus, es darauf an, wie Sie die Nachrichten eines bestimmten Benutzers zugreifen möchten, die Sie noch nicht detailliert beschrieben.

Update: @Snake, können Sie nur speichern Verweise auf Objekte in Java-Sammlungen. Ein primitiver long Wert kann daher nicht direkt gespeichert werden, sondern nur, indem zuerst auf ein Objekt Long umwandelt. Beachten Sie, dass seit Java5, diese Umwandlung zu Autoboxing implizit zurückgeführt werden kann, so dass Sie im Code sehen es nicht, aber es passiert trotzdem noch - z. B.

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

Wenn dies ein Uni-Projekt ist, dann vermute ich, dass das, was Sie gemeint sind, zu tun, ist dies:

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

Wie bereits erwähnt, zu einer Sammlung eines Objekts Hinzufügen es nicht dupliziert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top