How to use higher-order functions in Java

2 Answers

0 votes
import java.util.function.Function;

public class ProgramClass {

    // A higher‑order function is a function that does at least one of the following:
    // 1. Takes another function as an argument
    // 2. Returns a function as its result
    // If it does either one, it qualifies.

    // Higher-order function: takes a function as an argument
    static int applyTwice(Function<Integer, Integer> fn, int x) {
        return fn.apply(fn.apply(x));
    }

    // A simple function to pass in
    static int add3(int n) {
        return n + 3;
    }

    public static void main(String[] args) {

        // Use the higher-order function
        int result = applyTwice(ProgramClass::add3, 5); // 5 + 3 = 8 + 3 = 11

        System.out.println(result);
    }
}


/*
run:

11

*/

 



answered 17 hours ago by avibootz
0 votes
import java.util.function.Function;

public class ProgramClass {

    // A higher‑order function is a function that does at least one of the following:
    // 1. Takes another function as an argument
    // 2. Returns a function as its result
    // If it does either one, it qualifies.

    // makeMultiplier is a higher‑order function because it RETURNS another function
    static Function<Integer, Integer> makeMultiplier(int n) {

        // This inner function forms a closure and remembers the value of n
        return (Integer x) -> x * n; // Uses the captured value n
    }

    public static void main(String[] args) {

        // double is now a function created by makeMultiplier(2)
        // It remembers n = 2 through closure
        Function<Integer, Integer> doubleFn = makeMultiplier(2);

        // Calling doubleFn.apply(10) multiplies 10 by the captured n (which is 2)
        System.out.println(doubleFn.apply(10));
    }
}



/*
run:

20

*/

 



answered 17 hours ago by avibootz
...