import java.util.*;
import java.util.function.*;        //for Consumer class (if you need to assign a name to lambda func
//------------------------------------------------------------------------------
//Iterate thru a Collection using Lambda functions
//------------------------------------------------------------------------------
public class lambda 
{
    public static void main(String[] args) 
    {
        List<Integer>  array    = new ArrayList<Integer>();
        Map<Integer,String> map = new TreeMap<Integer,String>();

        array.add(5);
        array.add(9);
        array.add(8);
        array.add(1);
        
        map.put(5,"five");
        map.put(9,"nine");
        map.put(8,"eight");
        map.put(1,"one");

//for the arraylist -------------------------------------
 
        array.forEach( n -> System.out.println(n) );                    //using a lambda function

        System.out.println();

//another way
        Consumer<Integer> function1 = n -> System.out.println(n);       //assign a name to the lambda function      
        array.forEach(function1);                                       //use it

        System.out.println();


//for the map -------------------------------------------

        map.forEach( (k,v) -> System.out.println(k +" "+ v) );                          //using a lambda function

        System.out.println();

//another way
         map.forEach( (k,v) -> {System.out.print(k +" "); System.out.println(v);} );    //using a lambda function with 2 stmts

        System.out.println();

//another way
        BiConsumer<Integer,String> function2 = (k,v) -> {System.out.print(k +" "); System.out.println(v);};  //assign a name to it 
        map.forEach(function2);                                                                              //use it
    }
}