How to For Each in Hash Map in Java 8 using Lambda Expressions

Lambda Expression Java 8

In Java 1.8 (Java 8) this has become lot easier by using forEach method from Aggregate operations(Stream operations) that looks similar to iterators from Iterable Interface.

Just copy paste below statement to your code and rename the HashMap variable from hm to your HashMap variable to print out key-value pair.

HashMap<Integer,Integer> hm = new HashMap<Integer, Integer>();
/*
 *     Logic to put the Key,Value pair in your HashMap hm
 */

// Print the key value pair in one line.
hm.forEach((k,v) -> System.out.println("key: "+k+" value:"+v));

Below is the sample code that i tried using Lambda Expression. This stuff is so cool. Must try.

HashMap<Integer,Integer> hm = new HashMap<Integer, Integer>();

    Random rand = new Random(47);

    int i=0;
    while(i<100)
    {
        i++;
        int key = rand.nextInt(20);
        int value = rand.nextInt(50);
        System.out.println("Inserting key: "+key+" Value: "+value);
        Integer imap =hm.put(key,value);
        if( imap == null)
        {
            System.out.println("Inserted");
        }           
        else
        {
            System.out.println("Replaced with "+imap);
        }               
    }

    hm.forEach((k,v) -> System.out.println("key: "+k+" value:"+v));

Also one can use Spliterator for the same.

Spliterator sit = hm.entrySet().spliterator();

UPDATE


Including documentation links to Oracle Docs. For more on Lambda go to this link and must read Aggregate Operations and for Spliterator go to this link.

Design Patterns

Cover of "Design Patterns: Elements of Re...

Cover via Amazon

Hello guys,

Last week I got a chance to attend a training on Design Patterns. I would like to share my views on that this is the best way to really learn object-oriented design. After recognizing these Patterns it will improve your coding skills to par and further in future it will make you a good developer.

Prior knowledge of any computer language is required but it will be advantage to those people who have worked upon languages related to OOPs concept. It will be easy for them to co relate their problems and easy design solution to their problems.

1. Design Patterns are solution to common design problems that developers face during designing simple/complex applications and GOF(Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides) Gang Of Four identified those problems and make a series of those solutions as Design Patterns. I would recommend you all to read this book at least.

2. We can divide these 23 Design Patterns into three categories:

3. Structural Patterns are those patterns which are related to composing the classes and objects in order to form larger Structures. One can relate these patterns to common life examples like Bridge, Adapter etc. Let me write down those patterns:

  • Bridge
  • Adapter
  • Decorator
  • Composite
  • Proxy
  • Flyweight
  • Facade

4. Creational Patterns are related with Instantiating the objects, creating the good design concept while coding in order to make their use easy while developing applications, these are:

5. Behavioral Patterns  are related to Behavior of the objects, their communication with the other objects and their methods. Basically algorithmically design of the classes and their methods. These are:

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template Method
  • Visitor

So guys improve your programming skills as I am doing so right now. Please share your comments and suggestions to improve others.

Books you can read to improve your Design Patterns concept

1.  Design Patterns: Elements of Reusable Object-Oriented Software

2. Head First Design Patterns