java: HashMap<String, int> ne fonctionne pas
HashMap<String, int>
semble ne pas fonctionner, mais HashMap<String, Integer>
fonctionne.
Des idées pourquoi?
- votre choix de mots pour votre question est source de confusion, pouvez-vous préciser? Et exactement ce qui ne fonctionne pas, pouvez-vous mettre le code?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser les types primitifs comme les arguments génériques en Java. Utiliser à la place:
Avec auto-boxing/unboxing il y a peu de différence dans le code. Auto-boxing signifie que vous pouvez écrire:
au lieu de:
Auto-boxing désigne la première version est implicitement converti à la seconde. Auto-unboxing signifie que vous pouvez écrire:
au lieu de:
L'appel implicite à
intValue()
signifie que si la clé n'est pas trouvée, il va générer unNullPointerException
, par exemple:La raison en est type d'effacement. Contrairement, disons, en C# les types génériques ne sont pas conservées lors de l'exécution. Ils sont juste "sucre syntaxique" pour une conversion explicite pour vous sauver de faire cela:
Pour vous donner un exemple, ce code est parfaitement légal:
Float
etDouble
?GNU Mine de soutenir cela, mais pas l'utilisation de génériques. http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
Vous ne pouvez pas utiliser les types primitifs dans
HashMap
.int
, oudouble
ne fonctionnent pas. Vous devez utiliser ses enfermant type. pour un exempleMaintenant les deux sont des objets, de manière à ce travail.
int est un type primitif, vous pouvez lire ce que veut dire un type primitif java ici, et une Carte est une interface qui a pour objets d'entrée:
objet désigne une classe, et cela signifie également que vous pouvez créer une autre classe qui exends, mais vous ne pouvez pas créer une classe qui exends de int.
Si vous ne pouvez pas utiliser la variable int comme un objet. J'ai remorquage solutions pour votre problème:
ou
Vous pouvez utiliser le type de référence dans les arguments génériques, pas de type primitif.
Donc, ici, vous devez utiliser
et de conserver de la valeur que