Java functional programming comes into existence after Java 8th version onwards. Functional programming means a fundamental change in the approach to problem-solving. Functional programming allows programming with expressions (declaring functions), passing functions as arguments, and using functions as statements.
Types of Functional Programming
ADVERTISEMENT Popular Course in this category PROGRAMMING LANGUAGES - Specialization | 54 Course Series | 4 Mock TestsStart Your Free Software Development Course
Web development, programming languages, Software testing & others
- Streams Functional Programming
- Lambda Expressions Functional Programming
- Method Reference Functional Programming
How does Functional programming work in Java?
Before we get into the functional programming concept, let’s see the difference between Functional and structured programming. Structured programming emphasizes logical structure or process, whereas Functional programming mainly focuses on data. Structured programming follows a top-down approach, whereas Functional programming follows from bottom to top.
Functional programming is separated into tiny run-time entities called objects, whereas structured programming separates small units or functions. Structured programming is less secure, whereas Functional programming is highly secure. Structured programming can’t handle complex problems, whereas Functional programming handles any level of a complex problem.
Examples of Functional Programming in Java
Given below are the examples mentioned:
Example #1: Streams Functional Programming
Syntax:
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 } }</string></animal>
Output:
Explanation:
- In the Java class, we are generating setters and getters.
- We write the main code for printing dog names in the Java class.
- In the code itself, mention each line’s purpose in the comment.
- If we write the same code in structured programming, we need to write more lines for each method like filter(), collector(), findAny(), map(), etc. So, most functional programming development is preferred over structured programming.
Example #2: Lambda Expressions
- A lambda expression is used to represent a method interface with an expression.
- It helps to iterate, filter and extract data from collections.
- Lambda expression interface implementation is a functional interface.
- It reduces a lot of code.
- A lambda expression is treated as a function, so the java compiler can’t create .class
Syntax:
(arguments) -> { //code for implementation } Arguments: argument-list can be have values or no values Example: arguments1, arguments2, arguments3,…… ->: Joins code implementation and arguments.
a. Lambda expression with a single argument
Syntax:
(argument1) -> { //code for implementation }
Example – AreaOfSquare.java
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 } }
Output:
Explanation:
- The above created an interface Square and inside AreaOfSquare class written lambda expression.
- Within lambda expression, written logic for the area of a square.
- In the last line printed, the area of the square of 100 by calling the interface method getArea().
b. Lambda expression without argument
Syntax:
() -> { //code for implementation }
Example – MyNameString.java
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 } }
Output:
Explanation:
- The above created an interface Name and inside MyNameString class written lambda expression without argument.
- Within lambda expression, written logic for return string.
- In the last line printed, the string is Hi, Amardeep! By calling the interface method getMyName().
Example #3: Method Reference
- Method reference is used to refer to a method of functional interface.
- It is one more easy form of a lambda expression.
- If you use lambda expression every time to point a method, we can use method reference in place of method reference.
Syntax:
Class-Name:: static method name
Example – StaticMethodReference.java
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 } }
Output:
Explanation:
- The above created an interface Rectangle and inside StaticMethodReference class written static method reference code.
- Within the showRectangleArea() method, written logic for the area of a rectangle.
- The next line passed the static method reference to the RectangleArea interface reference.
- Next, line printing rectangle area by calling the getArea(10,20) method.
- Gives an output of 200.
Conclusion
Functional programming is achieved with streams, lambda expressions, and method references. It reduces lines of code and improves performance.
The above is the detailed content of Functional Programming in Java. For more information, please follow other related articles on the PHP Chinese website!

JavaachievesplatformindependencethroughtheJavaVirtualMachine(JVM),allowingcodetorunondifferentoperatingsystemswithoutmodification.TheJVMcompilesJavacodeintoplatform-independentbytecode,whichittheninterpretsandexecutesonthespecificOS,abstractingawayOS

Javaispowerfulduetoitsplatformindependence,object-orientednature,richstandardlibrary,performancecapabilities,andstrongsecurityfeatures.1)PlatformindependenceallowsapplicationstorunonanydevicesupportingJava.2)Object-orientedprogrammingpromotesmodulara

The top Java functions include: 1) object-oriented programming, supporting polymorphism, improving code flexibility and maintainability; 2) exception handling mechanism, improving code robustness through try-catch-finally blocks; 3) garbage collection, simplifying memory management; 4) generics, enhancing type safety; 5) ambda expressions and functional programming to make the code more concise and expressive; 6) rich standard libraries, providing optimized data structures and algorithms.

JavaisnotentirelyplatformindependentduetoJVMvariationsandnativecodeintegration,butitlargelyupholdsitsWORApromise.1)JavacompilestobytecoderunbytheJVM,allowingcross-platformexecution.2)However,eachplatformrequiresaspecificJVM,anddifferencesinJVMimpleme

TheJavaVirtualMachine(JVM)isanabstractcomputingmachinecrucialforJavaexecutionasitrunsJavabytecode,enablingthe"writeonce,runanywhere"capability.TheJVM'skeycomponentsinclude:1)ClassLoader,whichloads,links,andinitializesclasses;2)RuntimeDataAr

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

The five major features of Java are polymorphism, Lambda expressions, StreamsAPI, generics and exception handling. 1. Polymorphism allows objects of different classes to be used as objects of common base classes. 2. Lambda expressions make the code more concise, especially suitable for handling collections and streams. 3.StreamsAPI efficiently processes large data sets and supports declarative operations. 4. Generics provide type safety and reusability, and type errors are caught during compilation. 5. Exception handling helps handle errors elegantly and write reliable software.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.
