In this blog, I am going to show how to implement IntPredicate using lambdas.
And, use them to do useful work.
I am going to create a person class. Which has three properties, age, salary and name.
And, I will use lambdas to find count of person, who are above thirty years of age or has salary more than 50,000.
class Person {
private int salary;
private int age;
private String name;
public Person(final String name, final int age, final int salary){
if(name == null || name.trim().isEmpty())
throw new IllegalArgumentException("Name can not be empty");
this.name = name;
if(age < 0)
throw new IllegalArgumentException("Age Can not be less than zero");
this.age = age;
if(salary < 0)
throw new IllegalArgumentException("Salary Can not be less than zero");
this.salary = salary;
}
public String getName(){ return name; }
public int getAge() { return age; }
public int getSalary() { return salary; }
public void setName(final String name){ this.name = name; }
public void setAge(final int age){ this.age = age; }
public void setSalary(final int salary){ this.salary = salary; }
}
Now, I will create lambdas to implement the IntPredicate interface.
final static IntPredicate i_greaterThanThirty = (int age) -> age > 30;
final static IntPredicate ageAboveThirty = (age) -> age > 30;
final static IntPredicate salaryAbove20K = (int salary) -> salary > 20_000;
final static IntPredicate salaryAbove50K = (int salary) -> salary > 50_000;
Let us create list of person objects.
final IntPredicateImpl parentObj = new IntPredicateImpl();
final Person personOne = parentObj.new Person("Anurag", 35, 50_000);
final Person personTwo = parentObj.new Person("Rajneesh", 20, 20_000);
final Person personThree = parentObj.new Person("Durgesh", 41, 12_000);
final Person personFour = parentObj.new Person("Kamlesh", 25, 70_000);
List<Person> listOfPerson = List.of(personOne, personTwo, personThree, personFour);
Then use the lamdbas to filter out the peron and get the count.
long totalPersonAboveThirty = listOfPerson
.stream()
.mapToInt(Person::getAge)
.filter(ageAboveThirty)
.count();
System.out.format("Total Person above thirty %d.%n", totalPersonAboveThirty);
long totalNoOfPeopleWithSalaryAbove50k = listOfPerson
.stream()
.mapToInt(Person::getSalary)
.filter(salaryAbove50K)
.count();
System.out.format("Total Number of person with salary more than 50K %d.%n", totalNoOfPeopleWithSalaryAbove50k);
You can watch my video on youtube, where I code this example.
[embed]https://youtu.be/1nBBXGz9UVg[/embed]
Full Source Code :-
import java.util.function.IntPredicate;
import java.util.List;
//IllegalArgumentException
class IntPredicateImpl{
class Person {
private int salary;
private int age;
private String name;
public Person(final String name, final int age, final int salary){
if(name == null || name.trim().isEmpty())
throw new IllegalArgumentException("Name can not be empty");
this.name = name;
if(age < 0)
throw new IllegalArgumentException("Age Can not be less than zero");
this.age = age;
if(salary < 0)
throw new IllegalArgumentException("Salary Can not be less than zero");
this.salary = salary;
}
public String getName(){ return name; }
public int getAge() { return age; }
public int getSalary() { return salary; }
public void setName(final String name){ this.name = name; }
public void setAge(final int age){ this.age = age; }
public void setSalary(final int salary){ this.salary = salary; }
}
final static IntPredicate i_greaterThanThirty = (int age) -> age > 30;
final static IntPredicate ageAboveThirty = (age) -> age > 30;
final static IntPredicate salaryAbove20K = (int salary) -> salary > 20_000;
final static IntPredicate salaryAbove50K = (int salary) -> salary > 50_000;
public static void main(final String ... args){
final IntPredicateImpl parentObj = new IntPredicateImpl();
final Person personOne = parentObj.new Person("Anurag", 35, 50_000);
final Person personTwo = parentObj.new Person("Rajneesh", 20, 20_000);
final Person personThree = parentObj.new Person("Durgesh", 41, 12_000);
final Person personFour = parentObj.new Person("Kamlesh", 25, 70_000);
List<Person> listOfPerson = List.of(personOne, personTwo, personThree, personFour);
long totalPersonAboveThirty = listOfPerson
.stream()
.mapToInt(Person::getAge)
.filter(ageAboveThirty)
.count();
System.out.format("Total Person above thirty %d.%n", totalPersonAboveThirty);
long totalNoOfPeopleWithSalaryAbove50k = listOfPerson
.stream()
.mapToInt(Person::getSalary)
.filter(salaryAbove50K)
.count();
System.out.format("Total Number of person with salary more than 50K %d.%n", totalNoOfPeopleWithSalaryAbove50k);
}
}