Ich muss Paare wie <jSessioId, userId>
speichern. jSessionId ist einzigartig, aber userId nicht eindeutig (Mehrfachanmeldung).Beste Datenstruktur zum Speichern von jSessionId und userId
Ich brauche folgende Vorgänge auszuführen:
void add(jSessioId, userId)
userId getUserId(jSessionId)
void removeByJSessionId (jSessionId)
Set<userId> getAllUserId()
ich versuche HashMap<jSessioId, userId>
zu verwenden, aber in diesem Fall getAllUserId()
erfordern Werte konvertieren jedes Mal, wenn ich diese Daten anfordern zu setzen. Ich habe versucht, einen zusätzlichen Satz zu verwenden, um userId zu speichern, aber das sieht für mich auch nicht gut aus wegen viel zusätzlichen Codes.
Ich frage mich, was ist die beste Lösung, um solche Art von Daten zu speichern.
** UPDATE Use Cases für Methoden:
add
- Login OperationengetUserId
- jede Anfrage BetriebremoveBySessionId
- logout/session ZuhörergetAll
- früher viel in verschiedenen Stelle des Codes
In der aktuellen Lösung führe ich add
Operationen sowohl auf hashmap und eingestellt. Ich suche nach einer besseren Lösung.
Können Sie uns einige Kontext geben, wo und wann Sie diese Operationen durchführen wird? –
void add (jSessioId, userId) - Benutzer-Login userId getUserId (JSESSIONID) - jede Anfrage Leere removeByJSessionId (JSESSIONID) - Sitzung Hörer auf zerstören/Logout Set getAllUserId() - sehr oft in anderen Ort der Code –
Hängt davon ab wie oft getAllUserId aufgerufen wird, ob eine sortierte 'map.values ()' ausreicht ('O (N log N)'). (Man kann annehmen, dass Mehrfachanmeldungen selten sind, wenn das Sitzungszeitlimit klein genug ist und die Anwendung die Sitzung nicht dauerhaft verliert.) –