Uma função lambda é uma função sem declaração, isto é, não é necessário colocar um nome, um tipo de retorno e o modificador de acesso
ex.: Imprimindo elementos de uma lista
System.out.println("Imprime todos os elementos da lista!");
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
for(Integer n: list) { System.out.println(n); }
Utilizando função lambda
System.out.println("Imprime todos os elementos da lista!");
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
list.forEach(n -> System.out.println(n));
Fonte: http://www.devmedia.com.br/como-usar-funcoes-lambda-em-java/32826
Expressão Lambda
Além de ficar mais prático de escrever o código sem o uso direto da Collections, podemos também criar o Comparator de maneira bem mais enxuta sem utilizar a sintaxe de classe anônima:
Comparator comparador = (s1, s2) -> {
return Integer.compare(s1.length(), s2.length());
};
Essa é a sintaxe do Lambda no Java 8. Ela pode ser utilizada com qualquer interface funcional. Uma interface funcional é aquela que possui apenas um método abstrato (semanticamente falando pode haver diferenças).
Dessa forma o compilador consegue inferir qual método está sendo implementado nessas linhas. Diferente da geração de classes em tempo de compilação, como é feito para as classes anônimas, o lambda do Java 8 utiliza MethodHandles e o invokedynamic.
fonte: http://blog.caelum.com.br/o-minimo-que-voce-deve-saber-de-java-8/