Да се ​​отървем от циклите в Java 8

Да се ​​отървем от вериги в Java 8.

Функционално стил, въведен през Java 8 - чудесно допълнение към езика. Сега Java - това не е чист обектно-ориентиран, сега е хибрид обектно-ориентиран и функционално програмиране. Той се променя правилата на играта и ние трябва да променят своите ООП мозък, за да усвои тези промени.

Но защо трябва да приемем тези промени? Защо да губите време, опитвайки се да се разбираме с функционален стил, в които можем да решим проблема на чист обектно-ориентиран?

  • Функционално стил, въведен през Java 8, ни помага да се намали несъответствието между бизнес логиката и кода. Това ни дава възможност да разкажат историята на естествения поток на по-високо ниво. Вместо да кажеш, че искаш да го направиш, може да се каже това, което искате да направите.
  • Код става по-чист и стегнат.
  • по-високи функции за поръчки ни позволяват да:
  • Изпрати функции на други функции
  • Създаване на функциите вътре в други функции
  • функции върне от други функции

Това е голяма победа за Java, къде да го направите, трябва да изпрати, да създавате и да се върне обекти. Ние ще бъдем в състояние да напише код, който ще бъде по-надежден и по-целенасочен и лесно да се използва повторно.
  • Благодарение на Ламбда можем да направим мързелив оценка. Когато един израз ламбда е изпратен като аргумент на метода, компилаторът го оценява, когато той се нарича в метода. Това се различава от традиционните аргументи на метода, които се оценяват веднага.
  • Lambda направи пишете единица тестове весел. Те ни позволи да създадем лек тестове, които са чисти, с малък размер и бързо писане. Ние можем да изкореним тест код чрез ламбда. Това ни дава възможност да се тества, като всички видове сценарии ще се отрази на кода.
  • Нови модели за изучаване
  • И още много други!

  • Но стига толкова от водата, в тази статия ще разгледаме алтернативи на традиционните цикли. Разбира огъване цикъла, но това не се дава, без да му цена. счупи. продължи. върнете драматично да промени поведението на цикъла, което ни се разбере не само какво кода се опитва да постигне, но и да се разбере как работи на цикъла.

    Сега ще разгледаме как можем да трансформираме цикли в сбит и разбираем код.

    Да започнем кодиране!

    Всяка проба трябва да съдържа традиционното решение с помощта на цикли и решението да използвате новата чипове Java 8.

    В първия пример, ние искаме да се намери в колекцията на първата статия с етикет "Java".

    Нека да погледнем на решение с помощта на цикъла.

    Сега нека да се реши проблема с помощта на операции от приложния програмен интерфейс на живо.


    Доста интересно, нали? На първо място, ние използваме операция филтър, за да намерите всички статии с таг "Java", а след това използвайте findFirst (). за да получите първата поява. Тъй потоци (потоци) и филтър връща ленив поток, този подход ще се справят само елементи, докато намери първата поява.

    Сега нека да получите всички статии с таг "Java", а не само на първия.

    Първо решение с помощта на цикъла.

    Решение с помощта на операции поток.

    Засега всичко върви добре. Време за примери, които ще направят наистина blestat Stream API.

    Както обикновено, ние започваме с разтвора с помощта на цикъла.

    Можем ли да намерим ясно решение на този проблем, като се използват операции стрийминг?

    Чудесно! Използването groupingBy работа и връзка към метод getAuthor (). получаваме чиста и четим код.

    Сега нека да се намери останалата част от етикетите, използвани в колекцията.

    Да започнем с един пример за рамка.

    Добре, нека да разгледаме как можем да го решим с помощта на стрийминг сделки.


    Супер! flatmap ни помага да се изглади списъка с маркери в една получения поток, а след това ние използваме събират, за да създадете върна комплекта.

    неограничени възможности

    Разработване на нов функционален стил Java ще бъде тест за разработчиците на ООП, но този тест, който трябва да бъде добре приет. Аз дори стига дотам, че да се каже, че трябва да се научат чисто функционален език за програмиране. По този начин вие ще бъдете в състояние да разберат напълно възможностите и силата, които тя предоставя. Мисля, че това ще ви помогне да разберете функционално програмиране на различно ниво.

    Така че, за да функционално програмиране, заедно с доброто старо ПЛО и да използвате и двете от тях да пишат код още по-голям!