Ich verwende zwei ConcurrentHashMaps, um die folgenden Daten zu speichern. Ich werde im folgenden als BeispielImplementieren einer benutzerdefinierten Datenstruktur zum Ersetzen von 2 hashmaps
private Map<Player, FootballTeam> playerTeamMapping;
private Map<FootballTeam, League> teamLeagueMapping;
Gegeben verwenden nur die FootballTeam
Objekt, ich brauche abrufen zu können, entweder die Player
oder League
Objekte und einige Operationen
Fälle führen zu berücksichtigen:
Wenn es keine
Player
‚s zu einemFootballTeam
verbunden sind, aber einFootballTeam
Eintrag entfernen existiert dann dieFootballTeam
Eintrag vonteamLeagueMapping
.Wenn ein
Player
(n) ändert ihreFootballTeam
aber einFootballTeam
Eintrag vorhanden ist, dann entfernen Sie denFootballTeam
Eintrag von
teamLeagueMapping
nur, wenn kein anderer Spieler denFootballTeam
Referenzierung wird
i Bisher Wenn ich die beiden oben definierten Karten verwende, aber zu Lernzwecken, wurde mir gesagt, dass ich meine eigene Datenstruktur definieren muss, um dieses Problem zu lösen.
Ich denke an das Erstellen einer generischen Klasse ThreeWayHashMap<Left, Middle, Right>
, die von den 2 Karten (Left = Player, Middle = FootballTeam, Right = League)
unterstützt wird. Ist das der beste Ansatz? Ich muss grundsätzlich drei Karten beim Löschen synchron halten, also beim Entfernen von Einträgen (ich muss sicherstellen, dass ich diese Operationen an beiden ausführe).
Verwenden. Eine Datenbank. –
Warum möchten Sie eine generische Klasse erstellen? Ist das ein generelles Problem für Ihren Anwendungsfall? Ansonsten können Sie dieses Konzept auch in Ihre eigene Klasse einbinden. Die generische Implementierung wird unlesbar sein und Sie können sie nicht einfach in Zukunft ändern. – kamalkishor1991
@BoristheSpider Ich würde, wenn ich könnte, aber dies ist eine Lernübung zur Umsetzung des Problems ohne eine Datenbank. – unleashed