Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* crear la representacion de una funcion. toma un dato y regresa un valor de otro tipo(transformar)*/
- public interface Function<T,R>{
- R aplicar(T);
- }
- //clase toma un string y lo transforma a int
- public class DeStringALongitud implements Function<String,Integer> {
- public Integer aplicar(String s){
- return s.length();
- }
- }
- /*aplicar una funcion a todos los elementos de una coleccion */
- public static <T,R> List<R> mapear(Collection<? extends T> c,Function<? super T,R> f){
- List<R> r = new ArrayList<>();
- for( T t : c)
- r.add(f.aplicar(t));
- return r;
- }
- List<String> noms = Arrays.asList("juan","manuel");
- List<Integer> longitudes = mapear(noms, new DeStringALongitud());
- //vamos a suponer que queramos sacar de una lista los nombres cuya longitud sea par.
- /*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 :*/
- public interface Predicado<T>{
- boolean prueba(T);
- }
- //esta clase es ahora un predicado
- public class LongituDeStringEsPar implements Predicado<String>{
- public boolean prueba(String n){
- return n.lengt() % 2 == 0;
- }
- }
- /*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*/
- public static<T> filtrar(Collection<? extends T> c, Predicado<? super T> pre){
- List<T> r = new ArrayList<>();
- for(T t : c)
- if(pre.prueba(t))
- r.add(t);
- return r;
- }
- List<String> noms = Arrays.asList("juan","manuel","jesus","mari","jo");
- //obtener la lista de nombres pares
- List<String> nomsPares = filtrar(noms, new LongitudDeStringEsPar());
- System.out.println(nomsPares);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement