Comment obtenir un HashMap valeur avec trois valeurs
Si j'ai une table de hachage avec une telle clé:
[pubDate, title, link]
et cette valeur(exemple):
[Thu, 03 Jan 2013 21:50:02 +0100, Transferts - YBX : ''Je change de dimension'', http://www.link.fr/info/link_informations.html]
Puis-je récupérer le lien http://www.link.fr/info/link_informations.html
?
Code:
for (int i = 0; i < nl.getLength(); i++) {
//creating new HashMap
map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
//adding each child node to HashMap key => value
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
map.put(KEY_DATE, parser.getValue(e, KEY_DATE));
//map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
//adding HashList to ArrayList
menuItems.add(map);
}
- Sont ces classes avec 3 membres, ou les chaînes concaténées, ou quelque chose d'autre?
- Je ne comprends pas ce qu'ils ont les clés et les valeurs sont. Chaque entrée a un TITRE, le LIEN et la DATE, c'est évident - mais qu'allez-vous regarder vers le haut? Vous souhaitez rechercher un LIEN donné un TITRE et la DATE? Voulez-vous rechercher sur la base d'un TITRE seul, etc?
Vous devez vous connecter pour publier un commentaire.
J'ai juste été confrontés à la même question et a décidé de carte ma clé à un Entrée. Cela permet par la même l'indexation des fonctionnalités fournies par une carte tout en ayant plus d'une propriété associée à une clé. Je pense que c'est beaucoup plus propre solution que la création d'une catégorie distincte ou des plans d'imbrication.
À utiliser les données plus tard:
Mon utilisation personnelle d'une carte de fonctions nommées. Après avoir sélectionné la fonction par son nom, la fonction et le booléen déterminer si ou pas de nettoyage a été nécessaire dans le traitement.
Vous créez un objet qui contient toutes les trois sous-clés de la clé, comme des attributs. Assurez-vous de mettre en œuvre
equals
ethashCode
correctement.Utiliser cet objet comme un élément clé de votre carte:
Amusez-vous!
You create an object that holds all three values of the key as attributes
. Comment faire pour récupérer les trois valeurs une par une. Mettre valeur1 dans un, valeur2 dans b, valeur3 en c (par exemple). ?Vous pouvez également essayer d'utiliser un nested table de hachage, du type
HashMap<String, HashMap<String, HashMap<String, String>>>
, où vous pouvez alors formuler votre requête commemap.get(date).get(title).get(link)
La meilleure solution serait alors de saisir cette imbriquée hashmap dans votre propre classe en tant que telle:
Map<String, Map<String, Map<String, String>>> map
est TRÈS difficile à lireVous pouvez créer un composé clé qui contient toutes les valeurs que vous souhaitez en clés. Une façon simple de le faire pourrait être de concaténer l'ensemble les valeurs qui composent votre clé, délimité par une valeur que vous êtes sûr de ne pas apparaître dans les valeurs de clé.
E. g.:
Pour éviter le problème d'avoir à choisir un personnage qui n'apparaît dans aucune des valeurs de clé, afin de gérer les non-clés de Chaîne et probablement pour de meilleures performances, vous pouvez déclarer une nouvelle classe pour contenir vos valeurs clés et de remplacer la
equals
ethashCode
méthodes:Ensuite, vous pouvez définir votre carte comme:
HashMap
et l'utilisation DateAndTitle objet à l'index de votre carte.
Dans mon cas, j'ai trouvé une autre solution: c'est pour créer une liste de tableaux et de mettre tous les liens sur chaque boucle. C'est beaucoup plus facile.