Java Lambdas 1. Uso de @FuntionalInterface public class Main{ public static void main(String[] args) { Usable dato = () -> {System.out.println("Rimbombante!!!");}; dato.uso(); }
@FunctionalInterface interface Usable{ void uso(); }
//Salida: //Rimbombante!!! }
2. Usando listas import java.util.List; import java.util.Arrays;
public class Main{ public static void main(String[] args) { String[] nombres = new String[4];//(0,1,2,3) nombres[0] = new String("Mariana");
nombres[1] = new String("Marielena"); nombres[2] = new String("Antonella"); nombres[3] = new String("Adelaida");
List<String> listaNombres = Arrays.asList(nombres);
System.out.println("Nombres con longitud mayor a 7:"); listaNombres .stream().filter(n -> n.length() > 7) .forEach(System.out::println);
System.out.println("Nombres con longitud menor o igual a 7:"); listaNombres .stream().filter(n -> n.length() <= 7) .forEach(System.out::println);
System.out.println("Nombres que empiecen con M:"); listaNombres.stream() .filter(n -> n.startsWith("M")) .forEach(System.out::println);
System.out.println("Nombres que empiecen con A:"); listaNombres.stream() .filter(n -> n.startsWith("A")) .forEach(System.out::println); }
} 3. Concatenando cadenas public class Main{ public static void main(String[] args) {
X my_x = new X();
Funcionable concatenar = (nombre, apellidos) -> nombre.concat(" "+apellidos);
String nombreCompleto = my_x.sumar(concatenar,"Antonio","Lopez");
System.out.print("Nombre completo:\n"+nombreCompleto);
}
}
interface Funcionable{ String unir(String a, String b); }
class X{ public String sumar(Funcionable func, String x, String y){ return func.unir(x,y);
} } 4. Usando mĂŠtodos static import java.util.Arrays; import java.util.List; import java.util.function.Predicate; import java.util.function.Consumer;
public class Main{ public static void main(String[] args) { List<String> listaNombres = Arrays.asList("Ana","Maria","Fernando","Genaro","Tomas","Juana","Carlota","Horacio");
System.out.println("1. X::noEsJuana "); listaNombres .stream() .filter(X::noEsJuana) .forEach(System.out::println);
System.out.println("2. nombre -> X.noEsJuana(nombre) "); listaNombres .stream() .filter(n -> X.noEsJuana(n)) .forEach(System.out::println);
} }
class X{ public static final String NOMBRE = "Juana";
public static boolean noEsJuana(String nombre){ return !nombre.equals(NOMBRE); }
} 5. De nuevo con mĂŠtodos static import java.util.Arrays; import java.util.List;
public class Main{ public static void main(String[] args) { List<Integer> listaNumeros = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
System.out.println("Numeros % 3 == 0 :"); listaNumeros.stream() .filter(n -> n%3==0) .forEach(System.out::println);
System.out.println("Numeros %3 == 0 (usando metodos static):");
listaNumeros.stream() .filter(Main::calculo) .forEach(System.out::println); }
public static boolean calculo(int num){ return num%3==0; } }