Java8 - Learn Numeric Function interfaces with examples

What are the Function interface in java8?

Java8 introduced a functional interface to achieve functional programming with java language.

java.util.function package has many predefined functional interfaces.

These functional interfaces can be assigned as a target to lambda expressions or method /constructor references.

These will be very useful during an iteration of objects, stream API processing, and manipulate like filter data to process numeric data.

This post is about various numeric(Integer, Long, Double related) functional interfaces examples.

ToLongBiFunction interface in java example

This takes two arguments as input produces an output of long type.

The below code takes two long values, added this value using the lambda expression, finally called applyAsLong on the function to return the long result.

import java.util.function.ToLongBiFunction;

public class ToLongBiFunctionExample {
    public static void main(String[] args) {
        ToLongBiFunction<Long,Long> addLongFunction=(value1, value2)-> value1+value2;
        System.out.println(addLongFunction.applyAsLong(50l,40l)); // 90
    }
}

ToLongFunction Interface example in java

This function accepts two long values as input and produces a long value.

import java.util.ArrayList;
import java.util.List;
import java.util.function.ToLongFunction;

public class MyToLongFunctionExample {

    public static void main(String[] args) {
        // program example 1
        List<String> list = new ArrayList<String>();
        list.add("123");
        list.add("43");
        list.add("56");
        list.add("53");
        long[] result = list.stream().mapToLong(element -> Long.parseLong(element)).toArray();

        System.out.println(result);
        // program example 2
        ToLongFunction<String> longFunction = value -> Long.parseLong(value);
        System.out.println(longFunction.applyAsLong("123"));

    }
}

In the above code, Two examples are presented.

  • The first example is Converting a list of Strings into Long.
  • Create a List of Strings
  • Using streams interface, Iterated each element with mapToLong method
  • mapToLong(ToLongFunction f) used ToLongFunction indirectly using the lambda expression.
  • Next example, converting string data to the long object using ToLongFunction.

ToDoubleFunction Interface java example

It is functional represents to produce double value from the object.

import java.util.function.ToDoubleFunction;
public class MyToDoubleFunctionExample {
    public static void main(String[] args) {

        ToDoubleFunction<String> doubleFunction = value -> Double.parseDouble(value);
        System.out.println(doubleFunction.applyAsDouble("54")); // output 54
    }
}

ToDoubleBiFunction interface example

This function takes two parameters as input produces a double value.

The below code takes two integer values, added these values using a lambda expression, and assigned them to the functional interface. finally, called applyAsDouble on the function to return the Double Result.

import java.util.function.ToDoubleBiFunction;
public class Test {
    public static void main(String[] args) {
        ToDoubleBiFunction<Integer,Integer> addDoubleFunction=(value1, value2)-> value1+value2;
        System.out.println(addDoubleFunction.applyAsDouble(5,4)); //outputs 9
    }
}

ToIntFunction example

It takes one object data and produces an Integer value.

It is an example of converting a string to an Integer using the ToInitFunction interface and lambda expressions.

import java.util.function.ToIntFunction;

public class Test {
    public static void main(String[] args) {
        ToIntFunction<String> intFunction= value-> Integer.parseInt(value);
        System.out.println(intFunction.applyAsInt("5")); // output 5
    }
}

ToIntBiFunction interface java

This interface takes two arguments of integer and produces an integer result.

import java.util.fnction.DoubleToLongFunction;
import java.util.function.ToIntBiFunction;

public class Test {
    public static void main(String[] args) {
        ToIntBiFunction<Integer,Integer> addIntFunction=(value1, value2)-> value1+value2;
        System.out.println(addIntFunction.applyAsInt(15,14)); //outputs 29
    }
}

DoubleToLongFunction

This interface takes the Double value and produces the result as a long value.

import java.util.function.DoubleToLongFunction;
public class Test {
    public static void main(String[] args) {
        DoubleToLongFunction function = value-> new Double(value).longValue();
        System.out.println(function.applyAsLong(43.7)); //outputs 43
    }
}

IntFunction example

This interface takes the Integer value as an argument and produces a result of the data type given.

import java.util.function.IntFunction;
public class Test {
    public static void main(String[] args) {
        IntFunction<String> function= value-> String.valueOf(value);
        System.out.println(function.apply(43)); // outputs "43"
        System.out.println(function.apply(43).length()); // outputs 2
    }
}

IntToLongFunction interface

This takes an integer as input and produces a Long value

import java.util.function.IntToLongFunction;

public class Test {
    public static void main(String[] args) {
        IntToLongFunction fucntion= (value) -> Long.valueOf(value);
        System.out.println(fucntion.applyAsLong(21));
    }
}

LongFunction Interface

These interfaces accept long value as an argument and produce a result of the data type given.

import java.util.function.LongFunction;

public class Test {
    public static void main(String[] args) {
        LongFunction<String> longFunction= value-> String.valueOf(value);
        System.out.println(longFunction.apply(512l)); // outputs "512"
        System.out.println(longFunction.apply(513l).length()); // outputs 3
    }
}

LongToDoubleFunction interface

This interface accepts a long value as input and produces a double value as output.

import java.util.function.LongToDoubleFunction;

public class Test {
    public static void main(String[] args) {
        LongToDoubleFunction longTDoubleFunction= (value) -> Double.valueOf(value);
        System.out.println(longTDoubleFunction.applyAsDouble(21l)); //outputs 21.0
    }
}

LongToIntFunction interface

This interface takes long as input and outputs int value

import java.util.function.LongToIntFunction;

public class Test {
    public static void main(String[] args) {
        LongToIntFunction longToIntFunction = value-> (int)(value);
        System.out.println(longToIntFunction.applyAsInt(20143)); // outputs 20143
    }
}