How to resolve the algorithm Apply a callback to an array step by step in the Java programming language
How to resolve the algorithm Apply a callback to an array step by step in the Java programming language
Table of Contents
Problem Statement
Take a combined set of elements and apply a function to each element.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Apply a callback to an array step by step in the Java programming language
First example
In this example, we define two functional interfaces, IntConsumer
and IntToInt
, which represent functions that consume an integer and produce nothing and a function that consumes an integer and produces an integer, respectively.
Then, we define two methods, forEach
and update
, which take an array of integers and a function as arguments.
- The
forEach
method iterates over the array and calls the function for each element in the array. - The
update
method iterates over the array and updates each element in the array by calling the function with the current element as an argument.
In the main
method, we create an array of integers and pass it to the forEach
method along with an anonymous inner class that implements the IntConsumer
interface.
- The
run
method of this class simply prints the value of the integer passed to it.
Next, we pass the same array to the update
method along with an anonymous inner class that implements the IntToInt
interface.
- The
run
method of this class squares the value of the integer passed to it.
Finally, we again pass the array to the forEach
method along with another anonymous inner class that implements the IntConsumer
interface.
- The
run
method of this class prints the value of the integer passed to it. The output of this program is:
1
2
3
4
5
6
7
8
9
10
1
4
9
16
25
36
49
64
81
100
Second example
In this example, we use the Java 8 Streams API to perform the same operations on the array of integers.
- The
map
method takes a function that consumes an integer and produces an integer as an argument and applies it to each element in the stream. - The
reduce
method takes a function that consumes two integers and produces an integer as an argument and applies it to the elements in the stream to produce a single result.
In this case, we use the map
method to cube each element in the stream and the reduce
method to sum the cubes of the elements in the stream.
The output of this program is:
27
512
1024
2048
35937
3025
4913
8192
13824
21952
sum: 86621
Source code in the java programming language
public class ArrayCallback7 {
interface IntConsumer {
void run(int x);
}
interface IntToInt {
int run(int x);
}
static void forEach(int[] arr, IntConsumer consumer) {
for (int i : arr) {
consumer.run(i);
}
}
static void update(int[] arr, IntToInt mapper) {
for (int i = 0; i < arr.length; i++) {
arr[i] = mapper.run(arr[i]);
}
}
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
forEach(numbers, new IntConsumer() {
public void run(int x) {
System.out.println(x);
}
});
update(numbers, new IntToInt() {
@Override
public int run(int x) {
return x * x;
}
});
forEach(numbers, new IntConsumer() {
public void run(int x) {
System.out.println(x);
}
});
}
}
import java.util.Arrays;
public class ArrayCallback {
public static void main(String[] args) {
int[] myIntArray = {1, 2, 3, 4, 5};
int sum = Arrays.stream(myIntArray)
.map(x -> {
int cube = x * x * x;
System.out.println(cube);
return cube;
})
.reduce(0, (left, right) -> left + right); // <-- could substitute .sum() for .reduce(...) here.
System.out.println("sum: " + sum);
}
}
You may also check:How to resolve the algorithm Loops/Foreach step by step in the XPL0 programming language
You may also check:How to resolve the algorithm Delete a file step by step in the Icon and Unicon programming language
You may also check:How to resolve the algorithm Factors of an integer step by step in the PL/0 programming language
You may also check:How to resolve the algorithm Remove duplicate elements step by step in the Java programming language
You may also check:How to resolve the algorithm Bitwise operations step by step in the Kotlin programming language