web-dev-qa-db-fra.com

Comment obtenir des valeurs et des clés de HashMap?

J'écris un texte d'édition simple en Java. Lorsque l'utilisateur l'ouvrira, un fichier sera ouvert dans JTabbedPane. J'ai fait ce qui suit pour sauvegarder les fichiers ouverts:

HashMap<String, Tab> hash = new HashMap<String, Tab>();

Tab recevra les valeurs, telles que: File file, JTextArea container, JTabbedPane tab.

J'ai une classe appelée Tab:

public Tab(File file, JTextArea container, JTabbedPane tab)
{
    this.file = file;
    this.container = container;
    this.tab = tab;
    tab.add(file.getName(), container);
    readFile();
}

Maintenant, dans cette classe SaveFile, j’ai besoin d’obtenir les valeurs Tab stockées dans HashMap. Comment puis je faire ça?

32
user2279895

Pour obtenir toutes les valeurs d'une carte:

for (Tab tab : hash.values()) {
    // do something with tab
}

Pour obtenir toutes les entrées d'une carte:

for ( Map.Entry<String, Tab> entry : hash.entrySet()) {
    String key = entry.getKey();
    Tab tab = entry.getValue();
    // do something with key and/or tab
}

Mise à jour Java 8:

Pour traiter toutes les valeurs:

hash.values().forEach(tab -> /* do something with tab */);

Pour traiter toutes les entrées:

hash.forEach((key, tab) -> /* do something with key and tab */);
73
Bohemian

Vous donnez 1 dollar, cela vous donne un burger au fromage. Vous donnez la chaîne et elle vous donne l'onglet. Utilisez la méthode GET de HashMap pour obtenir ce que vous voulez. 

HashMap.get("String");
12
user2245180

Vous pouvez utiliser itérateur pour le faire: 

Pour les clés: 

for (Iterator <tab> itr= hash.keySet().iterator(); itr.hasNext();) {
    // use itr.next() to get the key value
}

Vous pouvez utiliser l'itérateur de la même manière avec les valeurs. 

2
bruhhhhh

Utilisez la clé 'chaîne' du hashmap pour accéder à sa valeur qui est votre classe d'onglets.

Tab mytab = hash.get("your_string_key_used_to_insert");
1
vishakvkt

Avec l'API de streaming Java8:

List values = map.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList());
1
javabrew

Cela fonctionnera avec hash.get ("clé"); Où key est la clé pour obtenir la valeur de Map

0

Vous devez suivre la séquence d'opeartions suivante:

  • Convertir Map en MapSet avec map.entrySet();
  • Obtenez l'itérateur avec Mapset.iterator();
  • Obtenez Map.Entry avec iterator.next();
  • utiliser Entry.getKey() et Entry.getValue()
# define Map
for (Map.Entry entry: map.entrySet)
    System.out.println(entry.getKey() + entry.getValue);
0
Hary Bakta
for (Map.Entry<String, Tab> entry : hash.entrySet()) {
    String key = entry.getKey();
    Tab tab = entry.getValue();
    // do something with key and/or tab
}

Fonctionne comme un charme.

0
Gama_aide

Pour obtenir des valeurs et des clés .__, vous pouvez simplement utiliser les méthodes values ​​() et keySet () de HashMap 

public static List getValues(Map map) {
    return new ArrayList(map.values());
}

public static List getKeys(Map map) {
    return new ArrayList(map.keySet());
}
0
Andriy