Java tutorial
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] argv) { List<Person> persons = Arrays.asList(new Person("Joe", 12), new Person("Jim", 34), new Person("John", 23)); Stream<MyWrapper> stream = persons.stream().filter(p -> p.getAge() > 18).map(p -> new MyWrapper(p)); System.out.println(stream.count()); } } class MyWrapper { private Person person; public MyWrapper(Person person) { this.person = person; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } } class Person { private String firstName; private String lastName; private int age; public Person(String firstName) { this.firstName = firstName; } public Person(String firstName, int age) { this.firstName = firstName; this.age = age; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [firstName=" + firstName + ", lastName=" + lastName + ", age=" + age + "]"; } }