La création d'un non-ordonnée de la carte de <char, int> en java
J'ai donc besoin d'avoir une certaine sorte de multiset de personnages, d'où l'ajout d'un double personnage augmente la cardinalité de 1, et la multiplicité des personnages ne devraient pas augmenter considérablement la mémoire de l'objet.
Ce sera mis en place avec une sorte de carte où les personnages sont les touches, qui détiennent une valeur représentant le nombre de caractère est représenté dans le jeu.
Cependant, j'ai du mal à comprendre que la collection serait le mieux pour cela (je cherchais à hashmap) et comment déclarer ce type de données. Je faisais quelque chose comme ça
Map m = new HashMap(char, int);
Mais le ci-dessus est une déclaration erronée, et je ne suis pas sûr de savoir comment exactement cette approche.
Multiset
pourrait être plus approprié qu'un straight-up Map
.J'ai été le décrivant comme multiset pour décrire la vue du client, nous avons besoin de mettre en œuvre de manière appropriée. Cependant, nous ne pouvons utiliser les bibliothèques de base de java et l'api.
OriginalL'auteur Aerlusch | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Essayer cette déclaration:
Vous pouvez ensuite ajouter des caractères en tant que tel:
OriginalL'auteur arshajii
Je voudrais mettre en œuvre à l'aide de
int[]
(ASCII) ouint[][]
pour l'unicode. Compte tenu de l'encombrement mémoire de stockage de boîte entiers dans une table de hachage la carte avec tous les hachage conflits induits par l'utilisation des nombres, et les personnages ne sont plus que des numéros, comme des clés.Cela commence avec une empreinte mémoire de zéro, et ajoute 2K pour chaque unicode page. Généralement, le texte utilise des caractères à partir d'un ou deux unicode pages.
En comparaison à l'aide de HashMap aura l'ensemble de la surcharge de stockage en boîte primitives dans une liste de listes chaînées. Pour chaque personnage, il y aura un objet de la
Entry
classe avec deux pointeurs pointant vers une boîte à clés et une liste liée objet avec tous ses champs et qui est titulaire d'un objet de la classeNode
avec un avant et un pointeur vers l'arrière et qui est un pointeur vers la boîte entier ... doit-je aller? 😉OriginalL'auteur akuhn
OriginalL'auteur cohadar
Java collections ne vous permet pas de créer une collection de types primitifs, vous devez plutôt utiliser leur classe wrapper (par exemple, La classe wrapper pour int Entier).
Cette façon, vous déclarez une carte. pour plus d'exemples et d'explications s'il vous plaît regardez ici
OriginalL'auteur KyelJmD
Meilleur moyen selon moi est d'utiliser le constructeur:
Garder les choses simples.
OriginalL'auteur Mr_Hmp