Dienstprogramm zum Überprüfen der Existenz eines Schlüssels in Map

8

Ich verwende den folgenden Code, um zu überprüfen, ob ein Schlüssel in einer Map -Instanz existiert:

%Vor%

Meine Frage ist:

Gibt es eine Utility oder Map Implementierung, um den obigen Code zu vereinfachen, wie zum Beispiel:

%Vor%

Mein Ziel ist: Wenn key in der Map nicht existiert, löst die Map-Implementierung eine Exception mit der übergebenen Zeichenfolge aus.

Ich weiß nicht, ob mein Wunsch vernünftig ist oder nicht?

(Tut mir leid, wenn ich die falsche Terminologie oder Grammatik verwende, ich lerne immer noch die englische Sprache.)

    
Sam 08.07.2012, 13:54
quelle

4 Antworten

3

Sie können einen Blick in die Konfigurationskarte von apache commons hier . Es implementiert nicht Map , hat aber eine ähnliche Schnittstelle mit einigen Helper-Methoden wie getString , getStringArray , getShort und so weiter.

Bei dieser Implementierung könnten Sie die Methode setThrowExceptionOnMissing(boolean throwExceptionOnMissing) verwenden und sie abfangen und so handhaben, wie Sie möchten.

Ist nicht genau mit einer konfigurierbaren Nachricht, aber aus meiner Sicht ist es nicht sinnvoll, eine feste Ausnahme nur mit einer benutzerdefinierten Nachricht zu werfen, da der Ausnahmetyp selbst von dem Kontext abhängt, in dem die Methode get aufgerufen wird . Zum Beispiel, wenn Sie ein get von einem Benutzer die Ausnahme wäre etwas damit, vielleicht UserNotFoundException , und nicht nur ein RuntimeException mit der Nachricht: Benutzer nicht in der Karte gefunden!

    
Francisco Spaeth 08.07.2012, 14:07
quelle
7

In Java 8 können Sie computeIfAbsent von Map , wie folgt:

%Vor%     
Marcin Majkowski 22.06.2017 12:13
quelle
1

Eine solche Methode existiert für eine Map in Java nicht. Sie können es erstellen, indem Sie natürlich die Map-Klasse erweitern oder eine Wrapper-Klasse erstellen, die die Map und eine tryGet -Methode enthält.

C # hat jedoch eine solche Methode: Directory.TryGetValue()

%Vor%     
mort 08.07.2012 14:00
quelle
0

so wie du es machst, ist es der Weg zu gehen.

als eine Randnotiz, Ihr Code macht nicht viel Sinn, da Sie immer wahr zurückgeben werden, vielleicht meintest du:

%Vor%     
Tomer 08.07.2012 13:58
quelle

Tags und Links