Comment faire pour récupérer les clés des & les valeurs de hashmap
Je suis en train d'insérer les valeurs de hachage de la carte par l'objet, et je veux vérifier si les valeurs sont insérées dans de hachage de la carte. je suis donc en utilisant ce code, mais dans l'exécution, je ne suis pas en mesure d'obtenir n'importe quelle sortie.
Comment résoudre ce problème?
Code:
import java.util.*;
import java.io.*;
import java.lang.*;
public class TaskList
{
private static HashMap<Integer, Object[]> dataz = new HashMap<Integer,Object[]>();
private static HashMap<Integer, Object[]> screen_dataz = new HashMap<Integer,Object[]>();
public final static Object[][] longValues = {{"10", "kstc-proc", "10.10.10.10.10.","5","O"},{"11", "proc-lvk1", "12.1.2.","4","O"},{"13", "trng-lvk1", "4.6.1.","3","O"}};
private static String sl,pid,tid,mval,status;
public static void main(String args[])
{
addTask();
}
public static void addTask()
{
for (int k=0; k<longValues.length; k++)
{
screen_dataz.put(k,longValues);
}
Set mapSet = (Set) screen_dataz.entrySet();
Iterator mapIterator = mapSet.iterator();
while (mapIterator.hasNext())
{
Map.Entry mapEntry = (Map.Entry) mapIterator.next();
String keyValue = (String) mapEntry.getKey();
String value = (String) mapEntry.getValue();
System.out.println(value);
}
}
}
Dans la boucle que vous devriez faire
Veuillez utiliser les génériques afin d'éviter d'éventuelles erreurs dues à un mauvais typecasting.
99% du temps à l'aide de l'Objet est incorrect. Toutes les fois que vous avez utilisé Object[] ils semblent être réellement String[] dans ce cas
Comme proposé sur vos précédentes questions: Java est un langage de programmation orientée objet. Vous allez produire plus facile à écrire et à maintenir le code si vous commencez à utiliser des classes personnalisées.
screen_dataz.put(k,longValues[k]);
Regardez votre HashMap
de nouveau et vous allez comprendre pourquoi.Veuillez utiliser les génériques afin d'éviter d'éventuelles erreurs dues à un mauvais typecasting.
99% du temps à l'aide de l'Objet est incorrect. Toutes les fois que vous avez utilisé Object[] ils semblent être réellement String[] dans ce cas
Comme proposé sur vos précédentes questions: Java est un langage de programmation orientée objet. Vous allez produire plus facile à écrire et à maintenir le code si vous commencez à utiliser des classes personnalisées.
Object
, Object[]
et Object[][]
sont très mauvaises décisions de conception (dans la plupart des cas - très certainement dans le vôtre).
OriginalL'auteur milano | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez ajouter une ligne de la
longValues
de la matrice à la carte, et non pas à l'ensemble de la matrice:Puis, tout en évoluant d'extraire la valeur que
Object[]
et pasString
, et la clé commeInteger
OriginalL'auteur darijan
Votre code avec quelques corrections/améliorations:
screen_dataz
a été, en ajoutant toujours le même objetla valeur stockée dans la carte est un tableau qui signifie qu'il ne sera pas imprimé comme vous vous attendez à un simple appel à
toString()
Object
àString
, cependant.Je l'ai fait, mais est revenue à ce changement, la pensée que peut-être il y avait une raison pour laquelle l'OP a choisi
Object
surString
, si non, alors il suffit de remplacerObject
avecString
.OriginalL'auteur Adam Siemion
Une correction dans votre code:
Vous souhaitez mettre à jour votre pour boucle
comme
OriginalL'auteur Juned Ahsan
D'abord, changer votre
for
boucle pour remplir àscreen_dataz
comme ça.Ensuite, faire le ci-dessous: - la
Cela permettra d'imprimer votre valeur correctement.
OriginalL'auteur SudoRahul
Pas mal de choses à commenter sur ce code.
Tout d'abord, le générique arguments de la paramétrée type sont incorrectes. La carte est actuellement le stockage
Map<Long,Object[]>
cependant des objets de typeObject[][]
sont ajoutés à laMap
. Je suppose que vous voulez entrer dans chaqueObject[]
séparémentEntry
dans leMap
.Le deuxième élément à considérer est l'itération sur les
Map
entrées. Au lieu d'utiliser leIterator
utiliser unfor..each
boucle.Sortie Finale
OriginalL'auteur Kevin Bowersox
Je pense que l'utilisation
screen_dataz.put(k,longValues[k]);
dans une boucle va vous aider.Vous pouvez également utiliser un Itérateur pour cela.
OriginalL'auteur LTKD