Lambda

package market;

 

import java.util.ArrayList;

import java.util.List;

import java.util.function.Consumer;

 

public class Oitinho {

 

 public static void main(String[] args) {

 

         List<String> palavras = new ArrayList<String>();

         palavras.add("Flavio Jr");

         palavras.add("Junior Market");

         palavras.add("Monster");

 

         // -------------------------------------- iterator

 

         // #1 - método normal

         Consumer<String> consumidor = new ImprimeNaLinha();

         palavras.forEach(consumidor);

 

         // #2 - mesma coisa, mas usando classe anonima

         Consumer<String> consumidor2 = new Consumer<String>() {

 

                 @Override

                 public void accept(String t) {

                         System.out.println(t);

                 }

         };

         palavras.forEach(consumidor2);

 

         // #3 - mesma coisa, mas declaração direto no método

         palavras.forEach(new Consumer<String>() {

                 @Override

                 public void accept(String t) {

                         System.out.println(t);

                 }

         });

 

         // #4 - mesma coisa mas usando lambda

         palavras.forEach((String t) -> {

                 System.out.println(t);

         });

 

         // #5 - menor ainda!

         palavras.forEach(s -> {

                 System.out.println(s);

         });

 

         // #6 - menor ainda!!!

         palavras.forEach(s -> System.out.println(s));

 }

}

 

class ImprimeNaLinha implements Consumer<String> {

 @Override

 public void accept(String s) {

         System.out.println(s);

 }

}