O operador de seta (->) em Java é explicado neste artigo junto com alguns exemplos de código para ajudá-lo a compreender o conceito.
O operador de seta, usado para criar expressões lambda, foi introduzido junto com a adição da funcionalidade de expressão lambda no Java 8. Ele divide o corpo da expressão dos argumentos.
(parameters) -> { statements; } // Lambda expression having arrow
Para tornar o código Java mais compreensível e conciso, a expressão lambda, que foi introduzida pelo Java 8, pode ser empregada para classes anônimas.
Uma ilustração de como construir uma classe anônima usando Java anterior ao Java 8 é mostrada abaixo.
o que é hashmap java
Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } };
E aqui está como podemos realizar a tarefa mencionada em Java 8 usando uma expressão lambda.
Runnable r1 = ()-> System.out.print(' method Run ');
Para entender melhor como usar os operadores lambda e arrow, vamos começar com alguns exemplos.
Como usar o operador Arrow em Java?
Nesta ilustração, o método draw() da interface Drawable foi implementado usando uma expressão lambda e o operador de seta. Veja a ilustração abaixo.
M.java
formulário completo do ctc
interface Drawable{ public void draw(); } public class M { public static void main(String[] args) { int w = 20; // arrow operator Drawable d=()->{ System.out.println(' Drawing width is '+w); }; d.draw(); } }
Saída:
Podemos utilizar a expressão lambda na programação Java de várias maneiras porque é uma ótima técnica para escrever código sucinto usando uma abordagem funcional. Aqui estão vários casos em que podemos usá-lo.
Operador de array na coleção Java
Nesta ilustração, usamos uma expressão lambda para filtrar dados de um ArrayList. Para alcançar o resultado desejado, usamos o método filter() e a API stream. Você pode ver como é mais simples escrever código lambda do que código não lambda. Veja a ilustração abaixo.
número do palíndromo
M1.java
package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; class P{ int id; String n; float pri; public P(int id, String n, float pri) { this.id = id; this.n = n; this.pri = pri; } } public class M1{ public static void main(String[] args) { List<p> l = new ArrayList</p><p>(); l.add(new P(1,' JavaTpoint ',17000)); l.add(new P(3,' Tutorial and example ',100500)); l.add(new P(2,' Website ',25000)); // using the arrow to filter data Stream</p><p> filtered_data = l.stream().filter(q -> q.pri > 17000); filtered_data.forEach( p -> System.out.println(p.n+': '+p.pri) ); } } </p>
Saída:
decodificação base64 em js
Tutorial and example: 100500.0 Website: 25000.0
Operador de array em thread Java
Para implementar o método run() de ambas as interfaces executáveis, usamos a expressão lambda nesta instância. Uma expressão lambda pode ser usada com facilidade porque Runnable possui uma interface de método único. veja a ilustração abaixo.
M3.java
package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class M3{ public static void main(String[] args) { // using arrow operator Runnable r1=()->{ System.out.println(' Thread is running... '); }; Thread t1 = new Thread(r1); t1.start(); } }
Saída:
Thread is running...