'using system.out.print with java streams

I have the below code to map each entry to a print statement, But it shows error.
Is something wrong in the way I understood Stream().map()?

How do I use System.out.println() within the streams API? how do I correct the following code?

public static void main(String[] args) {

    Properties p = new Properties();
    p.setProperty("name", "XYX");
    p.setProperty("email", "[email protected]");
    p.setProperty("address", "addr-street-city");

    p.entrySet().stream().map(e ->
            System.out.println(" " + e.getKey().toString() + " " + e.getValue().toString() + ""));
}


Solution 1:[1]

If you want to use map:

p.entrySet().stream()
            .map(e -> " "+e.getKey()+" "+e.getValue())
            .forEach(System.out::println);

Solution 2:[2]

p.entrySet().forEach(e -> System.out.println(e.getKey() + " " + e.getValue()));

or

p.forEach((key, value) -> System.out.println(key + " " + value));

Solution 3:[3]

properties.entrySet().stream()
            .map(entry -> String.format("%s : %s", entry.getKey(), entry.getValue()))
            .forEach(System.out::println);
  • .map(...) - convert you key-value to a string format
  • .forEach(...) - prints your string

Your output should look like that :

address : addr-street-city
email : [email protected]
name : XYX

Solution 4:[4]

p.entrySet().forEach(System.out::println)

map() should be used only if you want to alter/modify stream otherwise for printing to the console forEach would do the work as it accepts BiConsumer to print key and value

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Matteo T.
Solution 2
Solution 3 Daniel Taub
Solution 4 Peter Csala