Just to understand Lambda
better I have a array of integer like below –
JavaScript
x
Integer[] arr = {13, 7, 6, 45, 21, 9, 2, 100};
I want to sort the array using Lambda
function of Java 8.
I have used
Arrays.sort(arr, Collections.reverseOrder());
but I want to sort it using Lambda
of Java 8 any detailed explanation would be appreciated.
Advertisement
Answer
Arrays#sort
requires a Comparator
to sort the array. You can reverse the order of arguments to Comparator#compare
for the comparison to happen in the reverse order.
Without lambda, you would do it as
JavaScript
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Integer[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer x, Integer y) {
return Integer.compare(y, x);
}
});
System.out.println(Arrays.toString(arr));
}
}
Output:
JavaScript
[100, 45, 21, 13, 9, 7, 6, 2]
Lambda helps you get rid of all the things enclosed by a rectangle in the picture given below:
The things enclosed by a green rectangle are not required when you have just one statement in the body.
Thus, using lambda, the code becomes:
JavaScript
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
Arrays.sort(arr, (x, y) -> Integer.compare(y, x));
System.out.println(Arrays.toString(arr));
}
}
Output:
JavaScript
[100, 45, 21, 13, 9, 7, 6, 2]