Maison >Java >javaDidacticiel >Programmation fonctionnelle en Java
La programmation fonctionnelle Java voit le jour après la version Java 8ème. La programmation fonctionnelle signifie un changement fondamental dans l'approche de la résolution de problèmes. La programmation fonctionnelle permet de programmer avec des expressions (déclarer des fonctions), de passer des fonctions comme arguments et d'utiliser des fonctions comme instructions.
Types de programmation fonctionnelle
PUBLICITÉ Cours populaire dans cette catégorie LANGUAGES DE PROGRAMMATION - Spécialisation | 54 séries de cours | 4 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Avant d'entrer dans le concept de programmation fonctionnelle, voyons la différence entre la programmation fonctionnelle et structurée. La programmation structurée met l'accent sur la structure ou le processus logique, tandis que la programmation fonctionnelle se concentre principalement sur les données. La programmation structurée suit une approche descendante, tandis que la programmation fonctionnelle suit une approche de bas en haut.
La programmation fonctionnelle est séparée en minuscules entités d'exécution appelées objets, tandis que la programmation structurée sépare les petites unités ou fonctions. La programmation structurée est moins sécurisée, tandis que la programmation fonctionnelle est hautement sécurisée. La programmation structurée ne peut pas gérer des problèmes complexes, tandis que la programmation fonctionnelle gère n'importe quel niveau d'un problème complexe.
Vous trouverez ci-dessous les exemples mentionnés :
Syntaxe :
objectName.stream();
Code :
Animal.java
package com.streams; public class Animal { String name; String color; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Animal(String name, String color) { super(); this.name = name; this.color = color; } }
AnimalNames.java
package com.streams;//creating package //importing required packages to the code import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class AnimalNames { public static void main(String[] args) { getMyDogNames();//calling the method } private static void getMyDogNames() { Animal a1=new Animal("Puppy","black"); //creating a object for animal class Animal a2=new Animal("Tommy","brown");//creating a object for animal class Animal a3=new Animal("Zimmy","white");//creating a object for animal class List<Animal> persons = Arrays.asList(a1,a2,a3); //passing object references to list String dogName = persons.stream() //covert all elements into stream .filter(name -> "Puppy".equals(name.getName()))//filtering given elements from persons class .map(Animal::getName) //persons elements iterate over map .findAny()//find out the given element passed from filter .orElse("");// System.out.println("Dog Name :" + dogName); //print the dog name List<String> collect = persons.stream() .map(Animal::getName) .collect(Collectors.toList());//collecting all names from list System.out.println("All Dog names"); collect.forEach(System.out::println);//iterating collection with for each loop } }
Sortie :
Explication :
Syntaxe :
(arguments) -> { //code for implementation } Arguments: argument-list can be have values or no values Example: arguments1, arguments2, arguments3,…… ->: Joins code implementation and arguments.
Syntaxe :
(argument1) -> { //code for implementation }
Code :
package com.lambda;//creating a package interface Square{ //creating interface for quare public int getArea(int side); //create a method for get area } public class AreaOfSquare{ //As we are working with Lambda expression so no need to implement interface of square public static void main(String[] args) { Square area=(side)->{ // Lambda expression with only one argument. Return side*side; //returning area }; System.out.println(“Area of Square=>”+area.getArea(10)); //printing area by calling interface getArea method } }
Sortie :
Explication :
Syntaxe :
() -> { //code for implementation }
Code :
package com.lambda;//creating a package interface Name{ //creating interface for Name public String getMyName(); //create a method for get name } public class MyNameString{ //As we are working with Lambda expression so no need to implement interface of Name public static void main(String[] args) { Name name=()->{ // Lambda expression with out argument. return "Hi, Amardeep!"; //returning name }; System.out.println(name.getMyName()); //printing name by calling interface getMyName method } }
Sortie :
Explication :
Syntaxe :
Class-Name:: static method name
Code :
package method.reference;//creating package interface RectangleArea{ //creating RectangleArea interface public int getArea(int l,int b); //creating method getArea in interface } public class StaticMethodReference { //creating a classs public static int showRectangleArea(int length, int breadth){ //creating method for getting rectangle area return length*breadth; } public static void main(String[] args) { // Referring static method RectangleArea area = StaticMethodReference::showRectangleArea; //calling class name with method name // Calling interface method int outArea=area.getArea(10,20); System.out.println("Area of rectangle :"+outArea);//printing area } }
Sortie :
Explication :
La programmation fonctionnelle est réalisée avec des flux, des expressions lambda et des références de méthodes. Cela réduit les lignes de code et améliore les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!