Table de hachage avec clé entière en Java
Je suis en train de créer une table de hachage, comme suit:
Hashtable<int, ArrayList<byte>> block = new Hashtable<int, ArrayList<byte>>();
mais j'obtiens une erreur sur les deux int et de l'octet en disant: "Dimensions prévu après ce jeton".
Si j'utilise quelque chose comme:
Hashtable<String, byte[]>
- tout est bon. Quelqu'un peut m'expliquer pourquoi?
Grâce.
OriginalL'auteur Simon Rigby | 2010-09-09
Vous devez vous connecter pour publier un commentaire.
En Java de base de la collection de classes, vous pouvez stocker uniquement les types de référence (quelque chose qui s'étend java.lang.De l'objet). Vous ne peut pas magasin primitives comme
int
etbyte
. Note qu'un tableau commebyte[]
est pas primitive, mais aussi un type de référence.@Giuseppe mentionné, vous pouvez le définir comme ceci:
et puis mettre primitive
int
s'en tant que clés:parce que depuis Java 1.5, l'autoboxing changera automatiquement la primitive
int
dans unInteger
(wrapper) en coulisses.Si vous avez besoin de plus de vitesse (et de mesurer le wrapper classes de collection sont le problème!) vous pouvez utiliser une 3ème partie de la bibliothèque qui permet de stocker les primitives dans leurs collections. Un exemple de ces bibliothèques sont Trove et Colt.
OriginalL'auteur Bart Kiers
Java génériques ne peut pas être instanciée avec les types primitifs. Essayez d'utiliser les classes wrapper:
OriginalL'auteur Karl Johansson
Vous pouvez utiliser Entier au lieu de int et si vous êtes à l'aide de java 1.5+ le boxing/unboxing fonctionnalité qui va rendre votre vie facile lorsque vous travaillez avec elle.
OriginalL'auteur Yon