Lambda - Outro exemplo

package market;

 

import java.util.ArrayList;

import java.util.Comparator;

import java.util.List;

import java.util.function.Consumer;

 

public class Oitinho {

 

 public static void main(String[] args) {

 

         // cria um comparador por tamanho da string

         ComparadorPorTam comp = new ComparadorPorTam();

 

         // -------------------------------------- método antigo (longo)

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

         palavras.add("Flavio Jr");

         palavras.add("Junior Market");

         palavras.add("Monster");

 

         // usa uma classe estática

         palavras.sort(comp);

         System.out.println(palavras);

 

         // usando lambda (mesmo coisa, mas menos código)

         palavras.sort((s1, s2) -> {

                 if (s1.length() < s2.length())

                         return -1;

                 if (s1.length() > s2.length())

                         return 1;

                 return 0;

         });

 

         System.out.println(palavras);

 

         // menor ainda

         palavras.sort((s1, s2) -> Integer.compare(s1.length(), s2.length()));

 

         System.out.println(palavras);

 

         // mais um exemplo de lambda

         Consumer<String> impressora = s -> System.out.println(s);

         palavras.forEach(impressora);

 }

}

 

class ComparadorPorTam implements Comparator<String> {

 

 @Override

 public int compare(String s1, String s2) {

         if (s1.length() < s2.length())

                 return -1;

 

         if (s1.length() > s2.length())

                 return 1;

 

         return 0;

 }

}