- Given the arraylist of user defined objects or POJO (let we have person class).
- List <Person> personList
- Find or Search or Filter person object from list of person objects.
- We will create list of Person objects.
- We would like to find person object from list of person objects.
- We will filter person object on specified fields.
- We will filter person object by firstName, age etc.
Program – find POJO from list of objects using lambda stream java 8.
1.) Person class:
- Person class containing firstName, lastName, age etc.
- Person class is as shown below.
package org.learn; public class Person { public String firstName; public String lastName; public int age; public String contact; public Person(String firstName, String lastName, int age, String contact) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.contact = contact; } public String toString() { return "[" + firstName + " " + lastName + " " + age + " " +contact +"]"; } }
2.) FindObjectInList class:
FindObjectInList class contains the list of person objects. We are performing the following operations on list of person objects.
- Find person object(s) having first name = “Mike”
- Find person object(s) having first name = “Mike” and age = 24
package org.learn; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class FindObjectInList { public static void main(String[] args) { // Remove nulls from List List <Person> personList = Stream.of( new Person("Mike", "harvey", 34, "001894536"), new Person("Nick", "young", 75, "005425676"), new Person("Jack", "slater", 21 ,"009654153"), new Person("gary", "hudson", 55,"00564536"), new Person("Mike", "harvey", 21 ,"003685417"), new Person("gary", "hudson", 25,"00452341")) .collect(Collectors.toList()); System.out.println("List of person objects :"); personList.forEach(System.out::println); final String searchName = "mike"; System.out.println("\nSearch objects having firstName = "+searchName); List<Person> foundObjs = personList.stream() .filter(person -> person.firstName.equalsIgnoreCase(searchName)) .collect(Collectors.toList()); if(null != foundObjs) { foundObjs.forEach(System.out::println); } else { System.out.println("Could not found objects in list"); } final int age = 21; System.out.println("\nSearch objects having firstName = "+searchName + "& age "+age); foundObjs = personList.stream() .filter(person -> person.firstName.equalsIgnoreCase(searchName) && person.age == age ) .collect(Collectors.toList()); if(null != foundObjs) { foundObjs.forEach(System.out::println); } else { System.out.println("Could not found objects in list"); } } }
O/P- Filter POJO/user defined object from list of objects (lambda stream)
List of person objects : [Mike harvey 34 001894536] [Nick young 75 005425676] [Jack slater 21 009654153] [gary hudson 55 00564536] [Mike harvey 21 003685417] [gary hudson 25 00452341] Search objects having firstName = mike [Mike harvey 34 001894536] [Mike harvey 21 003685417] Search objects having firstName = mike& age 21 [Mike harvey 21 003685417]