web-dev-qa-db-fra.com

Stockage et récupération de valeur de clé Java HashMap

Je veux stocker des valeurs et les récupérer à partir d'un Java HashMap.

C'est ce que j'ai jusqu'ici:

public void processHashMap()
{
    HashMap hm = new HashMap();
    hm.put(1,"godric gryfindor");
    hm.put(2,"helga hufflepuff"); 
    hm.put(3,"rowena ravenclaw");
    hm.put(4,"salazaar slytherin");
}

Je souhaite récupérer toutes les clés et valeurs du HashMap en tant que collection Java ou en tant qu'ensemble d'utilitaires (par exemple, LinkedList).

Je sais que je peux obtenir la valeur si je connais la clé, comme ceci: 

hm.get(1);

Existe-t-il un moyen de récupérer les valeurs de clé sous forme de liste?

18
Arjun K P

Exemple de valeur de clé Java Hashmap:

public void processHashMap() {
    //add keys->value pairs to a hashmap:
    HashMap hm = new HashMap();
    hm.put(1, "godric gryfindor");
    hm.put(2, "helga hufflepuff");
    hm.put(3, "rowena ravenclaw");
    hm.put(4, "salazaar slytherin");

    //Then get data back out of it:
    LinkedList ll = new LinkedList();
    Iterator itr = hm.keySet().iterator();
    while(itr.hasNext()) {
        String key = itr.next();
        ll.add(key);
    }

    System.out.print(ll);  //The key list will be printed.
}
14
user1477239

J'utilise ces trois méthodes pour parcourir une carte. Toutes les méthodes ( keySet , values , entrySet ) retournent une collection.

// Given the following map
Map<KeyClass, ValueClass> myMap;

// Iterate all keys
for (KeyClass key  : myMap.keySet()) 
    System.out.println(key);

// Iterate all values
for (ValueClass value  : myMap.values()) 
    System.out.println(value);

// Iterate all key/value pairs
for (Entry<KeyClass, ValueClass> entry  : myMap.entrySet()) 
    System.out.println(entry.getKey() + " - " + entry.getValue());

Depuis Java 8, j'utilise souvent Streams with expressions lambda .

    // Iterate all keys
    myMap.keySet().stream().forEach(key -> System.out.println(key));

    // Iterate all values
    myMap.values().parallelStream().forEach(value -> System.out.println(value));

    // Iterate all key/value pairs
    myMap.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + " - " + entry.getValue()));
35
Joost

map.keySet() vous donnerait toutes les clés

10
Jigar Joshi
//import statements
import Java.util.HashMap;
import Java.util.Iterator;
import Java.util.TreeMap;

// hashmap test class
public class HashMapTest {

    public static void main(String args[]) {

        HashMap<Integer,String> hashMap = new HashMap<Integer,String>(); 

        hashMap.put(91, "India");
        hashMap.put(34, "Spain");
        hashMap.put(63, "Philippines");
        hashMap.put(41, "Switzerland");

        // sorting elements
        System.out.println("Unsorted HashMap: " + hashMap);
        TreeMap<Integer,String> sortedHashMap = new TreeMap<Integer,String>(hashMap);
        System.out.println("Sorted HashMap: " + sortedHashMap);

        // hashmap empty check
        boolean isHashMapEmpty = hashMap.isEmpty();
        System.out.println("HashMap Empty: " + isHashMapEmpty);

        // hashmap size
        System.out.println("HashMap Size: " + hashMap.size());

        // hashmap iteration and printing
        Iterator<Integer> keyIterator = hashMap.keySet().iterator();
        while(keyIterator.hasNext()) {
            Integer key = keyIterator.next();
            System.out.println("Code=" + key + "  Country=" + hashMap.get(key));
        }

        // searching element by key and value
        System.out.println("Does HashMap contains 91 as key: " + hashMap.containsKey(91));
        System.out.println("Does HashMap contains India as value: " + hashMap.containsValue("India"));

        // deleting element by key
        Integer key = 91;
        Object value = hashMap.remove(key);
        System.out.println("Following item is removed from HashMap: " + value);

    }

}
3
user3339147

Vous pouvez utiliser keySet() pour récupérer les clés . Vous devriez également envisager d’ajouter du texte dans votre carte, par exemple:

Map<Integer, String> hm = new HashMap<Integer, String>();
hm.put(1,"godric gryfindor");
hm.put(2,"helga hufflepuff"); 
hm.put(3,"rowena ravenclaw");
hm.put(4,"salazaar slytherin");

Set<Integer> keys = hm.keySet();
1
Super Chafouin
public static void main(String[] args) {

    HashMap<String, String> hashmap = new HashMap<String, String>();

    hashmap.put("one", "1");
    hashmap.put("two", "2");
    hashmap.put("three", "3");
    hashmap.put("four", "4");
    hashmap.put("five", "5");
    hashmap.put("six", "6");

    Iterator<String> keyIterator = hashmap.keySet().iterator();
    Iterator<String> valueIterator = hashmap.values().iterator();

    while (keyIterator.hasNext()) {
        System.out.println("key: " + keyIterator.next());
    }

    while (valueIterator.hasNext()) {
        System.out.println("value: " + valueIterator.next());
    }
}
1
Sumit Singh
void hashMapExample(){

    HashMap<String, String> hMap = new HashMap<String, String>();
    hMap.put("key1", "val1");
    hMap.put("key2", "val2");
    hMap.put("key3", "val3");
    hMap.put("key4", "val4");
    hMap.put("key5", "val5");

    if(hMap != null && !hMap.isEmpty()){
        for(String key : hMap.keySet()){
            System.out.println(key+":"+hMap.get(key));
        }
    }
}
0
Saurav Mondal