Comment Obtenir les Valeurs à partir de la Liste de la table de hachage?
J'ai un List
de HashMap
's qui a la clé de type Integer
et la valeur de type Long
.
List<HashMap<Integer, Long>> ListofHash = new ArrayList<HashMap<Integer, Long>>();
for (int i = 0; i < 10; i++) {
HashMap<Integer, Long> mMap = new HashMap<Integer, Long>();
mMap.put(Integer.valueOf(i), Long.valueOf(100000000000L+i));
ListofHash.add(mMap);
}
Maintenant, comment puis-je récupérer la clé et de la valeur à partir de la liste des HashMap
?
Si vous utilisez Collection
classe est la solution, merci de m'éclairer.
Mise à jour 1:
En fait je suis à l'obtention de la valeur à partir de la base de données et le mettre dans un HashMap
public static List<Map<Integer, Long>> populateMyHashMapFromDB()
{
List<HashMap<Integer, Long>> ListofHash = new ArrayList<HashMap<Integer, Long>>();
for (int i = 0; i < 10; i++) {
HashMap<Integer, Long> mMap = new HashMap<Integer, Long>();
mMap.put(Integer.valueOf(getIntFromDB(i)), Long.valueOf(getLongFromDB(i)));
ListofHash.add(mMap);
}
return ListofHash;
}
où getIntFromDB et getLongFromDB pouvez récupérer tout int et long valeurs respectivement.
Maintenant c'est où je veux obtenir mes valeurs que j'ai reçu de DB à la fois des clés et des valeurs
public void getmyDataBaseValues()
{
List<HashMap<Integer,Long>> ListofHash=populateMyHashMapFromDB();
//This is where i got confused
}
RÉPONSE C'est pourquoi Peter Lawrey suggéré
public class HashMaps {
public static void main(String[] args) {
//TODO Auto-generated method stub
testPrintHashmapValues(putToHashMap());
testPrintHashmapValuesWithList(putToHashMapWithList());
}
public static Map<Integer, Long> putToHashMap() {
Map<Integer, Long> map = new LinkedHashMap<Integer, Long>();
for (int i = 0; i < 10; i++) {
map.put(Integer.valueOf(i), Long.valueOf(200000000000L + i));
}
return map;
}
public static void testPrintHashmapValues(Map<Integer, Long> map) {
for (Map.Entry<Integer, Long> entry : map.entrySet()) {
System.out.println("key: " + entry.getKey() + " value: "
+ entry.getValue());
}
}
public static List<Map<Integer, Long>> putToHashMapWithList() {
List<Map<Integer, Long>> listOfHash = new ArrayList<Map<Integer, Long>>();
for (int i = 0; i < 10; i++) {
Map<Integer, Long> mMap = new HashMap<Integer, Long>();
mMap.put(Integer.valueOf(i), Long.valueOf(100000000000L + i));
listOfHash.add(mMap);
}
return listOfHash;
}
public static void testPrintHashmapValuesWithList(
List<Map<Integer, Long>> listOfHash) {
for (int i = 0; i < 10; i++) {
Map<Integer, Long> map = listOfHash.get(i);
for (Map.Entry<Integer, Long> entry : map.entrySet()) {
System.out.println(i + " hashMap");
System.out.println("key: " + entry.getKey() + " value: "
+ entry.getValue());
}
}
}
}
Ma Tâche est accomplie, même sans la création d'une Liste.
OriginalL'auteur Ads | 2011-06-15
Vous devez vous connecter pour publier un commentaire.
C'est toujours pas clair pour moi pourquoi vous voulez une liste.
Cette collection n'est pas conçu pour vous donner les paires clés/valeurs facilement. Si vous besoin de cette fonctionnalité, je voudrais suggérer à l'aide d'une structure différente.
En supposant que vous avez un mauvais code, vous ne pouvez pas modifier, vous pouvez le faire
Dans cet exemple, vous n'avez pas besoin d'une Liste ou d'une Carte.
La carte peut être remplacée par n'importe quelle Carte de mise en œuvre. Sauf si vous avez besoin d'utiliser une méthode uniquement disponible sur la table de hachage, il est préférable d'utiliser une interface. À l'aide d'une Liste de Carte est plus complexe que l'utilisation d'une seule Carte que je vous ai montré dans l'exemple, il n'est pas clair pourquoi vous avez besoin d'une Liste d'entre eux.
yep je suis d'accord que dans l'exemple table de hachage n'est pas nécessaire, mais dans mon cas je obtenir la clé et la valeur de la base de données, où la valeur n'est pas progressive et nous aussi ne sais pas ce que la valeur aussi. voir ma mise à jour 1 du code. espérons maintenant qu'il est à peu près clair.
J'ai mis à jour ma réponse. Peut-être que vous essayer de rendre les choses plus compliquées qu'elles ne devraient l'être.
yep.... u r droit.... j'ai juste confondu avec la liste...il peut être fait à l'aide de HashMap seul...
OriginalL'auteur Peter Lawrey
Vous parcourir la liste pour obtenir les cartes, puis itérer sur leur jeu de clés:
Note: j'ai aussi changé un peu de votre code, à l'aide de
Map
au lieu deHashMap
lorsque cela est possibleOriginalL'auteur MarcoS
Je suis en supposant que vous vous demandez comment faire pour l'obtenir à partir d'ArrayList,
Clé d'objet moyen que ce soit Entier clé que vous souhaitez
Bonne Chance!
Tout à fait vrai! J'ai pensé que sa question était plus générale sur la façon d'accéder à ces éléments. Cependant Itération sur ListofHash sera une bien meilleure option.
il me semble qu'il a juste besoin d'un
long[10]
qui serait beaucoup plus simple.il semble que je dois connaître la clé pour obtenir la valeur de droite.mais je dono la touche trop depuis que je l'obtenir à la fois de DB. consultez la mise à jour 1.
OriginalL'auteur TeaCupApp
Quelque chose de cet effet:
PS a pas été testé.
OriginalL'auteur Buhake Sindi
OriginalL'auteur Manuel Selva
Vous avez un total de 10 Cartes avec un seul élément stocké. Et ces Cartes sont stockées dans une Liste. Vous pouvez récupérer ces Cartes et de ses éléments:
Également les variables ne devraient pas commencer avec des majuscules (ListOfHash). Même si java ne se plaignent que c'est une mauvaise pratique et difficile à lire le code comme ça, car on pourrait penser que c'est un nom de classe au lieu d'une variable.
ça marchait aussi, mais Peter Lawrey enregistré une création de liste.
OriginalL'auteur Alfredo Osorio