HashMaps et les valeurs Null?
Comment faites-vous passer des valeurs null dans une table de hachage?
L'extrait de code suivant fonctionne avec des options rempli:
HashMap<String, String> options = new HashMap<String, String>();
options.put("name", "value");
Person person = sample.searchPerson(options);
System.out.println(Person.getResult().get(o).get(Id));
Donc la question est ce qui doit être entré dans les options et ou méthode pour passer à une valeur nulle?
J'ai essayé le code suivant sans succès:
options.put(null, null);
Person person = sample.searchPerson(null);
options.put(" ", " ");
Person person = sample.searchPerson(null);
options.put("name", " ");
Person person = sample.searchPerson(null);
options.put();
Person person = sample.searchPerson();
- Que signifie "sans succès" implique? Quel est le problème? Obtenez-vous un message d'erreur?
- Apprendre à utiliser une Carte séparément, puis de l'intégrer dans votre programme. docs.oracle.com/javase/6/docs/api/java/util/Map.html
- pourquoi nous ne sommes pas arriver exception de pointeur null après l'ajout de la valeur null comme clé dans la carte?
" "
dans les pas d'unnull
chaîne, c'est une chaîne de caractères contenant un seul caractère espace. Donc, à la recherche de cette utilisation" "
.""
est pas nulle, il en est une chaîne vide. Seulementnull
est le bon pointeur à null. Doncput.("name", null);
- Laid, mais peut-être créer un
Map<Person[], Person[]>
. Quand je voisHashMap
sur le côté gauche d'une déclaration de variable j'ai tendance à supprimer le "Hash".
Vous devez vous connecter pour publier un commentaire.
HashMap prend en charge les deux
null
des clés et des valeurshttp://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
Alors votre problème est probablement pas la carte elle-même.
Vous pouvez prendre note des possibilités ci-dessous:
1. Les valeurs entrées dans la carte peut être
null
.Toutefois avec plusieurs
null
des clés et des valeurs, il n'aura null valeur de la clé de la paire de fois.sortie sera :
2. votre code s'exécute
null
qu'une seule foisIl dépend de la mise en œuvre de votre
searchPerson
méthodesi vous souhaitez avoir plusieurs valeurs à
null
, vous pouvez mettre en œuvre en conséquencede sortie:
Il semble que vous essayez d'appeler une méthode avec un paramètre de Mappage.
Ainsi, pour appeler avec un vide du nom de la personne, le droit de l'approche devrait être
Ou vous pouvez le faire comme ceci
À l'aide de
Pourrait vous obtenir une exception de pointeur null. Tout dépend de la mise en œuvre de searchPerson() la méthode.
Son une bonne pratique de programmation éviter d'avoir
null
valeurs dans une Carte.Si vous disposez d'une entrée avec
null
valeur, alors il n'est pas possible de dire si une entrée est présente dans la carte ou a unnull
valeur est associée.Vous pouvez soit définir une constante pour de tels cas (Exemple:
String NOT_VALID = "#NA"
), ou vous pouvez avoir une autre collection de stocker les clés qui ontnull
valeurs.Veuillez cocher cette lien pour plus de détails.
If you have an entry with null value, then it is not possible to tell whether an entry is present in the map or has a null value associated with it.
: qu'Map.containsKey
? Ou une itération sur toutes les entrées de la carte et le contrôle de leurMap.Entry.getKey()
?Selon votre premier code snipet semble ok, mais j'ai un comportement similaire causée par une mauvaise programmation. Avez-vous coché la case "options" de la variable n'est pas null avant de le mettre appel?
Je suis en utilisant Struts2 (2.3.3) webapp et utiliser une table de hachage pour l'affichage des résultats.
Quand est exécutée (dans une classe initialisée par une Action de classe) :
Eu cette erreur:
Semble que le NullPointerException points de la méthode put (numéro de Ligne 155), mais le problème était que de la Carte n'a pas été initialisée avant. Il a compilé ok, puisque la variable est de la méthode que de définir la valeur.
vous pouvez probablement le faire comme ceci: