class Person { private int personId; private String jobDescription; public Person(int personId, String jobDescription) { super(); this.personId = personId; this.jobDescription = jobDescription; } public int getPersonId() { return personId; } public String getJobDescription() { return jobDescription; } @Override public String toString() { return Objects.toStringHelper(Person.class) .add("personid", personId) .add("job description", jobDescription) .toString(); } } class Job { private int personId; private String description; public Job(int personId, String description) { super(); this.personId = personId; this.description = description; } public int getPersonId() { return personId; } public String getDescription() { return description; } @Override public String toString() { return Objects.toStringHelper(Job.class) .add("personid", personId) .add("job description", description) .toString(); } } Function<Person, Job> mapPersonToJob = new Function<Person, Job>() { public Job apply(Person person) { Job job = new Job(person.getPersonId(), person.getJobDescription()); return job; } };
/** * Map a list of persons to jobs */ @Test public void map_obects_with_guava_function () { List<Person> persons = Lists.newArrayList( new Person(1, "Husband"), new Person(2, "Dad"), new Person(3, "Software engineer"), new Person(4, "Adjunct instructor"), new Person(5, "Pepperoni hanger") ); List<Job> jobs = Lists.transform(persons, mapPersonToJob); logger.info(jobs); assertEquals(5, jobs.size()); }
Output
[ Job{personid=1, job description=Husband}, Job{personid=2, job description=Dad}, Job{personid=3, job description=Software engineer}, Job{personid=4, job description=Adjunct instructor}, Job{personid=5, job description=Pepperoni hanger} ]