
Aspects
- Functional Programming - Functions
- Functional Programming - Functional Composition
- Functional Programming - Eager vs Lazy Evaluation
- Functional Programming - Persistent Data Structure
- Functional Programming - Recursion
- Functional Programming - Parallelism
- Functional Programming - Optionals & Monads
- Functional Programming - Closure
- Functional Programming - Currying
- Functional Programming - Reducing
Java 8 Onwards
- Functional Programming - Lambda Expressions
- Functional Programming - Default Methods
- Functional Programming - Functional Interfaces
- Functional Programming - Method References
- Functional Programming - Constructor References
- Functional Programming - Collections
Functional Programming
- Functional Programming - High Order Functions
- Functional Programming - Returning a Function
- Functional Programming - First Class Functions
- Functional Programming - Pure Functions
- Functional Programming - Type Inference
- Exception Handling in Lambda Expressions
Streams
- Functional Programming - Intermediate Methods
- Functional Programming - Terminal methods
- Functional Programming - Infinite Streams
- Functional Programming - Fixed Length Streams
Useful Resources
Functional Programming - High Order Functions
A function is considered as a High Order function if it fulfils any one of the following conditions.
It takes one or more parameters as functions.
It returns a function after its execution.
Java 8 Collections.sort() method is an ideal example of a high order function. It accepts a comparing method as an argument.
Example - Passing lambda expression as comparator
FunctionTester.java
package com.tutorialspoint; import java.util.Arrays; import java.util.Collections; import java.util.List; public class FunctionTester { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(3, 4, 6, 7, 9); //Passing a function as lambda expression Collections.sort(numbers, (a,b) ->{ return a.compareTo(b); }); System.out.println(numbers); } }
Output
Run the FunctionTester and verify the output.
[3, 4, 6, 7, 9]
Example - Passing Comparator Function
FunctionTester.java
package com.tutorialspoint; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class FunctionTester { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(3, 4, 6, 7, 9); Comparator<Integer> comparator = (a,b) ->{ return a.compareTo(b); }; Comparator<Integer> reverseComparator = comparator.reversed(); //Passing a function Collections.sort(numbers, reverseComparator); System.out.println(numbers); } }
Output
Run the FunctionTester and verify the output.
[9, 7, 6, 4, 3]
Advertisements