Est-il possible qu'un HashMap
renvoie une valeur par défaut pour toutes les clés non trouvées dans le jeu?
J'utilise Java.
Est-il possible qu'un HashMap
renvoie une valeur par défaut pour toutes les clés non trouvées dans le jeu?
J'utilise Java.
En Java 8, utilisez Map.getOrDefault . Il faut la clé et la valeur à renvoyer si aucune clé correspondante n'est trouvée.
Aucune implémentation de Map ne le fait exactement, mais il serait trivial d'implémenter la vôtre en étendant HashMap:
public class DefaultHashMap<K,V> extends HashMap<K,V> {
protected V defaultValue;
public DefaultHashMap(V defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public V get(Object k) {
return containsKey(k) ? super.get(k) : defaultValue;
}
}
Utilisez la carte par défaut de Commons si vous ne souhaitez pas réinventer la roue, par exemple,
Map<String, String> map = new DefaultedMap<>("[NO ENTRY FOUND]");
String surname = map.get("Surname");
// surname == "[NO ENTRY FOUND]"
Vous pouvez également transmettre une carte existante si vous n'êtes pas chargé de la créer.
Vous pouvez simplement créer une nouvelle classe qui hérite de la table de hachage et ajouter getDefault méthode. Voici un exemple de code:
public class DefaultHashMap<K,V> extends HashMap<K,V> {
public V getDefault(K key, V defaultValue) {
if (containsKey(key)) {
return get(key);
}
return defaultValue;
}
}
Je pense que vous ne devriez pas ignorer get(K key) la méthode de la mise en œuvre, en raison des motifs prévus par Ed Staub dans son commentaire, et parce que vous allez rompre le contrat de la Carte d'interface (ce qui peut potentiellement conduire à une certaine dur-à-trouver des bugs).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.