Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  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);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement