Est-il possible d'obtenir de l'élément de HashMap par sa position?
Comment extraire un élément d'une table de hachage par sa position, est-il possible?
- Qu'entendez-vous par "position"? HashMaps ne sont pas commandés, ils n'ont pas l'habitude de la notion de "position" que vous obtenez avec quelque chose comme un Vecteur.
- Voulez-vous dire par son ordre d'insertion ou une autre commande?
- ordre d'insertion.
Vous devez vous connecter pour publier un commentaire.
HashMaps ne pas préserver l'ordre:
Prendre un coup d'oeil à LinkedHashMap, ce qui garantit une prévisible itération de l'ordre.
Utiliser une LinkedHashMap et quand vous avez besoin de récupérer, par position, convertir les valeurs dans une liste de tableaux.
Si vous voulez maintenir l'ordre dans lequel vous avez ajouté des éléments à la carte, utilisez
LinkedHashMap
plutôt que de simplementHashMap
.Ici est une approche qui va vous permettre d'obtenir une valeur par son index sur la carte:
Si pour une raison quelconque, ont pour coller avec la table de hachage, vous pouvez convertir le jeu de clés à un tableau d'index et les clés du tableau pour obtenir les valeurs de la carte comme suit:
Vous pouvez ensuite accéder à la carte, comme:
String myKey = keys[i].toString();
Utilisation
LinkedHashMap
:Utilisation LinkedHashMap et l'utilisation de cette fonction.
Définir comme ce et.
La fonction peut renvoyer le bulletin de participation sélectionné.
Une autre approche de travail est en train de transformer les valeurs de la carte dans un tableau et ensuite récupérer l'élément à l'index. Essai de 100 000 de l'élément de l'index de recherche dans LinkedHashMap de 100 000 objets à l'aide d'une des méthodes suivantes conduit à des résultats suivants:
Dans l'ensemble de la récupération de l'élément à l'indice de LinkedHashMap semble être assez lourde opération.
HashMap et les données sous-jacentes de la structure des tables de hachage, n'ont pas de notion de position. Contrairement à une LinkedList ou Vecteur, la clé d'entrée est transformé en un "seau" où la valeur est stockée. Ces seaux ne sont pas classées dans une manière qui fait sens en dehors de la table de hachage de l'interface et en tant que tel, les articles que vous mettez dans la table de hachage ne sont pas dans l'ordre dans le sens que vous attendez avec les autres structures de données
HashMap a pas de notion de position, donc il n'y a aucun moyen d'obtenir un objet par la poste. Les objets dans les Cartes sont à définir et à obtenir par des clés.
Je suppose que par "position", vous faites référence à l'ordre dans lequel vous avez inséré les éléments dans la table de hachage. Dans ce cas, vous voulez être à l'aide d'une LinkedHashMap. Le LinkedHashMap n'offre pas une méthode d'accesseur toutefois, vous aurez besoin d'écrire comme
HashMaps ne permettent pas l'accès par position, il ne sait que sur le code de hachage et de et de il peut récupérer la valeur si il est possible de calculer le code de hachage de la clé. Les arborescences ont une notion de la commande. Linkedhas cartes de préserver l'ordre dans lequel ils sont entrés dans la carte.
vous pouvez utiliser le code ci-dessous pour obtenir la clé :
String [] keys = (String[]) item.keySet().toArray(new String[0]);
et d'obtenir un objet ou une liste d'insérer dans la table de hachage avec clé de cet article comme ceci :
item.get(keys[position]);
Vous pouvez essayer de mettre en place quelque chose comme ça, regarde:
J'espère que cela fonctionne pour vous.