A scăpa de cicluri în Java 8

A scăpa de bucle în Java 8.

Stilul funcțional, introdus în Java 8 - mare plus față de limba. Acum Java - nu este o OOP pura, este acum un OOP hibrid și programare funcțională. Se schimbă regulile jocului și avem nevoie pentru a schimba creierele lor OOP pentru a absorbi aceste schimbări.

Dar de ce ar trebui să acceptăm aceste schimbări? De ce ar trebui să piardă timpul în încercarea de a obține, împreună cu stilul funcțional, în cazul în care putem rezolva problema pe o OOP pur?

  • Stilul funcțional, introdus în Java 8, ne ajută la reducerea decalajului dintre logica de afaceri și cod. Aceasta ne permite să spunem povestea în fluxul natural la un nivel superior. În loc să spui că vrei să faci asta, poți să spui ce vrei să faci.
  • Codul devine mai curat și concis.
  • funcții de ordin superior ne permit:
  • Trimite funcții pentru alte funcții
  • Creați funcții în interiorul altor funcții
  • Funcții de întoarcere de la alte funcții

Acesta este un mare câștig pentru Java, în cazul în care pentru a face acest lucru avem nevoie pentru a trimite, de a crea și de a reveni obiecte. Vom fi în măsură să scrie cod care va fi mai fiabile, mai concentrat și ușor de a reutiliza.
  • Datorită Lambda putem face evaluarea leneș. Atunci când o expresie lambda este trimis ca argument al metodei, compilator evaluează când este numit în metoda. Aceasta diferă de argumentele metoda convenționale, care sunt evaluate imediat.
  • Lambda face scrierea de unități teste vesel. Ele ne permit să creeze un teste ușoare, care sunt curate, de mici dimensiuni și scris rapid. Putem dezradacina cod de test folosind lambda. Acest lucru ne permite de a testa, ca tot felul de scenarii va afecta codul.
  • Noi modele pentru studiul
  • Si mult mai mult!

  • Dar destul de apă, în acest articol ne vom uita la alternative la ciclurile tradiționale. Desigur cicluri de îndoire, dar nu este dat fără prețul său. pauză. continua. a reveni dramatic schimba comportamentul ciclului, făcându-ne să înțelegem nu numai ceea ce codul este încercarea de a realiza, dar, de asemenea, pentru a înțelege cum funcționează ciclul.

    Acum ne uităm la modul în care putem transforma ciclurile într-un cod concis și ușor de citit.

    Da, începe de codificare!

    Fiecare probă va conține soluția tradițională folosind cicluri și soluția folosind noua cipuri Java 8.

    În primul exemplu, dorim să găsim în colecția primului articol cu ​​tag-ul „Java“.

    Să ne uităm la o soluție folosind ciclul.

    Acum, să rezolve problema prin utilizarea operațiunilor de API Stream.


    Destul de rece, nu-i așa? În primul rând, vom folosi o operație de filtrare pentru a găsi toate articolele etichetate cu „Java“, apoi utilizați findFirst (). pentru a obține prima apariție. Deoarece fluxuri (fluxuri), și se întoarce filtrul de flux leneș, această abordare se va ocupa doar elemente până când găsește prima apariție.

    Acum, să obțină toate articolele etichetate cu „Java“, în loc de doar primul.

    Prima soluție folosind cicluri.

    Soluție folosind operații flux.

    Până în prezent, totul merge bine. Timpul pentru exemple care vor face API Stream într-adevăr blestat.

    Ca de obicei, vom începe cu soluția folosind cicluri.

    Putem găsi o soluție clară pentru această problemă, prin operații de streaming?

    Minunat! Utilizarea funcționării groupingBy și o legătură cu metoda getAuthor (). obținem un cod curat și ușor de citit.

    Acum să găsim restul etichetele utilizate în colecție.

    Să începem cu un exemplu de cadru.

    Bine, să ne uităm la modul în care putem rezolva cu ajutorul tranzacțiilor de streaming.


    Se răcește! flatmap ne ajută să aplatiza lista de tag-uri într-un singur flux de rezultat, iar apoi vom folosi colecta pentru a crea setul returnat.

    posibilități infinite

    Dezvoltarea de nou stil funcțional Java va fi un test pentru dezvoltatorii OEP, dar acest test, care trebuie să fie bine primită. chiar am merge atât de departe încât să spun că ar trebui să învețe un limbaj de programare pur funcțională. Astfel, va fi capabil să înțeleagă pe deplin capacitățile și puterea pe care le oferă. Cred că vă va ajuta să înțelegeți programarea funcțională la un alt nivel.

    Deci, ajunge la programare funcțională, împreună cu bun vechi PLO, și de a folosi ambele dintre ele pentru a scrie cod chiar mai mare!