131 votes

Java: comment convertir une HashMap<String, Object=""> à la matrice

J'ai besoin de convertir un HashMap<String, Object> d'un tableau; quelqu'un pourrait-il me montrer comment c'est fait?

212voto

landon9720 Points 11241
 hashMap.keySet().toArray(); // returns an array of keys
 hashMap.values().toArray(); // returns an array of values

Modifier

Convient de noter que l'ordre des deux tableaux peuvent ne pas être les mêmes, Voir oxbow_lakes réponse pour une meilleure approche pour l'itération lorsque la paire clé/valeurs sont nécessaires.

73voto

oxbow_lakes Points 70013

Si vous voulez les clés et les valeurs, vous pouvez toujours le faire via l' entrySet:

hashMap.entrySet().toArray(); // returns a Map.Entry<K,V>[]

À partir de chaque entrée, vous pouvez bien sûr obtenir à la fois la clé et la valeur via l' getKey et getValue méthodes

57voto

kmccoy Points 543

Si vous avez HashMap<String, SomeObject> hashMap alors

hashMap.keySet().toArray();

retourne un Object[]. Si au contraire, vous voulez un tableau du type SomeObject, vous pouvez utiliser:

hashMap.keySet().toArray(new SomeObject[0]);

30voto

CrackerJack9 Points 2407

Pour garantir le bon de commande pour chaque tableau de Clés et de Valeurs, l'utilisation de ce (les autres réponses de l'utilisation des Sets qui n'offrent aucune garantie quant à l'ordre.

Map<String, Object> map = new HashMap<String, Object>();
String[] keys = new String[map.size()];
Object[] values = new Object[map.size()];
int index = 0;
for (Map.Entry<String, Object> mapEntry : map.entrySet()) {
    keys[index] = mapEntry.getKey();
    values[index] = mapEntry.getValue();
    index++;
}

12voto

Dean Wild Points 1332

Une alternative à CrackerJacks suggestion, si vous voulez que la table de hachage pour maintenir l'ordre, vous pourriez envisager d'utiliser une LinkedHashMap à la place. Aussi loin que im courant c'est la fonctionnalité est identique à celle d'une table de hachage, mais il est FIFO ainsi, il maintient l'ordre dans lequel les éléments ont été ajoutés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X