web-dev-qa-db-fra.com

Mappez <String, String>, comment imprimer ensemble la "chaîne de clé" et la "chaîne de valeur"

Je suis nouveau sur Java et essaie d'apprendre le concept de cartes. 

Je suis venu avec le code ci-dessous. Cependant, je souhaite imprimer la "chaîne de clé" et la "chaîne de valeur" simultanément. 

ProcessBuilder pb1 = new ProcessBuilder();
Map<String, String> mss1 = pb1.environment();
System.out.println(mss1.size());

for (String key: mss1.keySet()){
    System.out.println(key);
}

Je n'ai trouvé que la méthode qui n'imprime que la "chaîne de clé".

6
Thor

Il y a différentes façons d'y parvenir. En voici trois.

    Map<String, String> map = new HashMap<String, String>();
    map.put("key1", "value1");
    map.put("key2", "value2");
    map.put("key3", "value3");

    System.out.println("using entrySet and toString");
    for (Entry<String, String> entry : map.entrySet()) {
        System.out.println(entry);
    }
    System.out.println();

    System.out.println("using entrySet and manual string creation");
    for (Entry<String, String> entry : map.entrySet()) {
        System.out.println(entry.getKey() + "=" + entry.getValue());
    }
    System.out.println();

    System.out.println("using keySet");
    for (String key : map.keySet()) {
        System.out.println(key + "=" + map.get(key));
    }
    System.out.println();

Sortie

using entrySet and toString
key1=value1
key2=value2
key3=value3

using entrySet and manual string creation
key1=value1
key2=value2
key3=value3

using keySet
key1=value1
key2=value2
key3=value3
14
Stefan Dollase

À l'intérieur de votre boucle, vous avez la clé, que vous pouvez utiliser pour récupérer la valeur de la Map:

for (String key: mss1.keySet()) {
    System.out.println(key + ": " + mss1.get(key));
}
4
blacktide
final Map<String, String> mss1 = new ProcessBuilder().environment();
mss1.entrySet()
        .stream()
        //depending on how you want to join K and V use different delimiter
        .map(entry -> 
        String.join(":", entry.getKey(),entry.getValue()))
        .forEach(System.out::println);
2
dmitryvinn