Рубрики
Без рубрики

Java 8: Лямбда-выражение

Эта тема может показаться немного сложной, а синтаксис лямбда-выражения может показаться запутанным… Помеченный лямбда, java, java8.

Эта тема может показаться немного сложной, и синтаксис лямбда-выражения может показаться некоторым запутанным. Я надеюсь, что к концу статьи вы получите более четкое представление о том, что такое лямбда-выражение.

Именно, мы рассмотрим:

  • Что такое лямбда-выражение
  • Внешняя И внутренняя итерация
  • Лямбда-выражение в функциональном интерфейсе
  • Преимущества использования лямбда-выражения

Что такое лямбда-выражение

В Java 8 появилось много новых функций, и лямбда-выражение является одной из них. Это функция , которая не принадлежит ни к какому классу . Они называются анонимными, потому что у них нет модификаторов доступа, у них нет объявления возвращаемого типа и, в конечном счете, у них нет имени. Обычно методы в Java обладают всеми этими характеристиками.

Давайте посмотрим на эти фрагменты кода:

import java.util.ArrayList;

public class LambdaExpression {

    public static void main(String[] args) {

        ArrayList fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Mango");
        fruits.add("Pear");
        fruits.add("Grapes");

        for(String element : fruits){
            System.out.println(element);
        }
    }
}

Выход:

Apple
Mango
Pear
Grapes

Внешняя И внутренняя итерации Приведенный выше код предназначен для внешней итерации, которая работает нормально, за исключением того, что:

  1. Цикл является последовательным, и он должен проходить через все элементы, и они будут напечатаны в порядке, указанном коллекцией.
  2. Поток управления этой программой является жестким. Например, если мы хотим избежать печати “apple”, нам придется добавить оператор if и, следовательно, больше кода.

Итак, что мы можем сделать вместо этого? Вот где лямбда-выражение может оказать большую помощь. Если вместо цикла for-each мы используем лямбда-выражение, мы получим тот же результат.

import java.util.ArrayList;

public class LambdaExpression {

   public static void main(String[] args) {

       ArrayList fruits = new ArrayList<>();
       fruits.add("Apple");
       fruits.add("Mango");
       fruits.add("Pear");
       fruits.add("Grapes");

       fruits.forEach((n) -> System.out.println(n));
   }
}

Синтаксис для лямбда-выражения – параметр → выражение. Как вы можете видеть, итерация выполняется в фоновом режиме, код становится более читаемым и производительным.

Лямбда-выражение в функциональном интерфейсе Лямбда-выражения используются функциональными интерфейсами (интерфейс, который имеет только один абстрактный метод). В случае, если мы не хотим использовать лямбда-выражения, мы можем создать анонимный класс (класс, у которого нет имени и для которого создается объект. В данном случае мы создали объект функционального интерфейса).

public interface FunctionalInterface {

    public void showFunctionalInterface();
}
public class FunctionalInterfaceExample {

   public static void main(String[] args) {
       String message = "You are learning lambda expression!";

       //Anonymous class
       FunctionalInterface functionalInterface = new FunctionalInterface() {
           @Override
           public void showFunctionalInterface() {
               System.out.println(message + " Well done!");
           };

       };
       functionalInterface.showFunctionalInterface();
   }
}

Если вместо этого мы действительно хотим использовать лямбда-выражение, то это то, что мы могли бы сделать:

public class FunctionalInterfaceExample {

    public static void main(String[] args) {

        String message = "You are learning lambda expression!";

        FunctionalInterface functionalInterface = ()-> System.out.println(message + " Well done!");
        functionalInterface.showFunctionalInterface();

    }
}

Преимущества использования лямбда-выражения

В заключение, преимущества использования лямбда-выражения заключаются в следующем:

  • Более чистый код
  • Устраняет шаблонный код
  • Более высокая производительность
  • Облегчает функциональное программирование

Для получения дополнительных статей, подобных этой, я недавно запустил свой новый блог если вы хотите почитать. В противном случае, я все равно хотел бы, чтобы вы сочли это полезным!:)

Оригинал: “https://dev.to/maddy/java-8-lambda-expression-3egf”