SHARE
TWEET

Untitled

a guest Jul 16th, 2019 116 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* crear la representacion de una funcion. toma un dato y regresa un valor de otro tipo(transformar)*/
  2.  
  3. public interface Function<T,R>{
  4.     R aplicar(T);
  5. }
  6.  
  7. //clase toma un string y lo transforma a int
  8. public class DeStringALongitud implements   Function<String,Integer> {
  9.         public Integer aplicar(String s){
  10.             return s.length();
  11.         }
  12. }
  13.  
  14.  
  15. /*aplicar una funcion a todos los elementos de una coleccion */
  16. public static <T,R> List<R> mapear(Collection<? extends T>  c,Function<? super T,R> f){
  17.         List<R> r = new ArrayList<>();
  18.         for( T t : c)
  19.             r.add(f.aplicar(t));
  20.         return r;
  21. }
  22.            
  23.  
  24. List<String> noms = Arrays.asList("juan","manuel");
  25. List<Integer> longitudes = mapear(noms, new DeStringALongitud());
  26.  
  27. //vamos a suponer que queramos sacar de una lista los nombres cuya longitud sea par.
  28.  
  29. /*creamos la interfaz Predicado<T> esta se utilizara para crear objetos que determinen si un objeto cumple con una condicion. el metodo abstracto recibe un valor de tipo T y regresa boolean :*/
  30.  
  31. public interface Predicado<T>{
  32.     boolean prueba(T);
  33. }
  34.  
  35. //esta clase es ahora un predicado
  36. public class LongituDeStringEsPar implements Predicado<String>{
  37.     public boolean prueba(String n){
  38.         return n.lengt() % 2 == 0;
  39.     }
  40. }
  41.  
  42. /*predicados se usan con la funcion filtrar. recibe una coleccion y un predicado y regresa una lista de objetos que cumplan con la condicion de el predicado*/
  43.  
  44. public static<T> filtrar(Collection<? extends T> c, Predicado<? super T> pre){
  45.     List<T> r = new ArrayList<>();
  46.     for(T t : c)
  47.         if(pre.prueba(t))
  48.             r.add(t);
  49.     return r;
  50. }
  51.  
  52. List<String> noms = Arrays.asList("juan","manuel","jesus","mari","jo");
  53.  
  54. //obtener la lista de nombres pares
  55. List<String> nomsPares = filtrar(noms, new LongitudDeStringEsPar());
  56.  
  57. System.out.println(nomsPares);
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top