package com.levelup.java.util.function; import static org.junit.Assert.assertEquals; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; import org.apache.log4j.Logger; import org.junit.Test; import com.google.common.base.Objects; import com.google.common.collect.Lists; /** * This java example will demonstrate common uses of the * java.util.function.Function * * @author Justin Musgrove * @see <a href='http://www.leveluplunch.com/java/examples/java-util-function-function-example/'>Function example</a> */ public class FunctionExample { private static final Logger logger = Logger .getLogger(FunctionExample.class); 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; } }; @Test public void map_objects_with_java8_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 = persons.stream().map(mapPersonToJob) .collect(Collectors.toList()); logger.info(jobs); assertEquals(5, jobs.size()); } @Test public void apply() { Person person = new Person(1, "Description"); Job job = mapPersonToJob.apply(person); assertEquals("Description", job.getDescription()); } }