Qual a diferença entre essas duas linhas de codigo , pra imrpimir uma lista ? qual mais recomendavel usar ? existem diferença de performance ou coisa do tipo ?
//lista1.forEach(p -> System.out.println(p)); lista1.forEach(System.out::println);
Qual a diferença entre essas duas linhas de codigo , pra imrpimir uma lista ? qual mais recomendavel usar ? existem diferença de performance ou coisa do tipo ?
//lista1.forEach(p -> System.out.println(p)); lista1.forEach(System.out::println);
Quando declaramos System.out::println
, nós temos na verdade um código equivalente a essa expressão lambda p -> System.out.println(p)
.
Ou seja, o compilador do Java vai saber que ao realizar o forEach() na lista, a cada iteração do método forEach() teremos um objeto referente ao tipo daquela lista e ele atribui esse tipo como parâmetro que deverá ser passado ao método de referência, que no caso é o println
.
Então o que acontece é que, quando você faz isso: System.out::println
implicitamente você está dizendo ao compilador, faça isso: p -> System.out.println(p)
Em relação a performance acho que não há diferença.