Java lambda expression can be used to replace legacy anonymous class. For example, let's consider the following POJO class.
public class Dish {
private String name;
private Boolean vegitarian;
private Integer calories;
private DishType type;
}
Let's say, we have a list of objects from the above class and we want to sort them by name. The normal approch to sort this kind of custom object list is, using a comparator. So, we can write a comparator as follows.
Comparator<Dish> comparator = new Comparator<Dish>() {
@Override
public int compare(Dish o1, Dish o2) {
return o1.getName().compareTo(o2.getName()); // ASC order
//return o2.getName().compareTo(o1.getName()); // DESC order
}
};
With Java's lambda, we can get rid of anonymous class comparator and reduce the code to a single like as follows.
Comparator<Dish> comparator = Comparator.comparing(Dish::getName);
And we can sort the list of Dish's as following.
Collections.sort(menu, comparator);
0 comments:
Post a Comment