Почему Java 8 будет ввести лямбда-выражение?

Почему Java 8 будет ввести лямбда?

Перед Java8 появиться, если вы хотите, чтобы перейти к другой части кода в методе очень удобно. Вы будете почти невозможно пройти вокруг блока, потому что Java является объектно-ориентированным языком, поэтому вы должны создать объект принадлежит к классу, его метода, чтобы поместить блок кода, который вы хотите передать.

Давайте посмотрим на два очень типичный пример, нить компаратор конфигурации:

Структура резьбы:

Когда мы хотим выполнить некоторый код логики в другом потоке, как правило, в коде реализовать метод интерфейса Runnable прогон, который, как показано ниже:

public static void main(String[] args) {
    myThread t = new myThread();

}

class myThread implements Runnable {
    @Override
    public void run() {
        System.out.println("放入你想执行的代码");
    }
}

Вы пишете этот код искать , чтобы открыть новый поток для выполнения пользовательского кода , чтобы сделать это вы создаете MyThread .

Затем мы смотрим на строительство компаратора:

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(2);
    list.add(5);
    list.add(1);
    list.add(4);
    list.add(3);

    Comparator<Integer> comparator = new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    };
    Collections.sort(list, comparator);
}

Метод сортировки будет продолжать вызывать метод сравнения, порядок элементов не переставляет , пока не заказано до сих пор. Пишет компаратор передаются в методе объекта рода Коллекцию логики сравнения сегмента кода, код будет интегрирован в логику сортировки, это вы написали класс и метод .

Эти два примера вы увидите их сходство, передавая кусок кода других абонентов (пул потоков или метод сортировки), этот код будет вызываться в новом методе.

Однако, прежде чем Java8 появиться, если вы хотите, чтобы перейти к другой части коды в методе очень удобно, потому что Java является объектно-ориентированным языком, так что вы хотите построить принадлежит к классу объектов, одним из его метод, чтобы место, куда вы хотите, чтобы передать блок кода. В то время как в некоторых других языках, могут быть непосредственно перенесены блоки кода, такие как JS. С этой целью, Ja решили присоединиться к синтаксической экспрессии сахара лямбды.

преобразование лямбда

Для входящего блока сравнения, наша цель состоит в том, чтобы сравнить логический раздел входящий, использование лямбда-выражения может быть:

Синтаксис выражений Лямбда: Параметр -> выражение, если вы хотите, чтобы входящий код не представлен выражением, вы можете использовать параметры -> {} множество выражений. Если параметры не должны быть переданы, он может быть использован () -> форма выражения.

public static void main(String[] args) {

        List<Integer> list = new ArrayList<>();
        list.add(2);
        list.add(5);
        list.add(1);
        list.add(4);
        list.add(3);

        Collections.sort(list, (one,two)->{
            System.out.println("one="+one);
            System.out.println("two="+two);
            return two - one;
        });
    }

Компилятор разбирает одну и две являются эталонными методами сравнения оригинального интерфейса, и автоматически присваиваются типа Integer.

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

public static void main(String[] args) {

    new Thread(() -> {
        for (int i = 0; i < 100; i++) {

            System.out.println("这是一个线程" + i);
        }
    }).start();

    for (int i = 100; i < 200; i++) {
        System.out.println("这是主线程" + i);
    }
}

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

Мы по-прежнему рекомендуем использование практической работы, можно получить производительность, что материя, но вы думаете, лямбда-выражение потери производительности запросов, чем стоимость небольшого MySQL слишком много.

рекомендация

отwww.cnblogs.com/keeya/p/11404631.html