1.Maven Dependency
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool.guava</groupId> <artifactId>guava</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>guava</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
2.Person.java
package org.fool.guava.collections.list; import com.google.common.base.MoreObjects; public class Person { private String firstname; private String lastname; private int age; private String sex; public Person(String firstname, String lastname, int age, String sex) { this.firstname = firstname; this.lastname = lastname; this.age = age; this.sex = sex; } 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; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return MoreObjects.toStringHelper(this).add("firstname", this.getFirstname()) .add("lastname", this.getLastname()).add("age", this.getAge()).add("sex", this.getSex()).toString(); } }
3.FluentIterableTest.java
package org.fool.guava.collections.list; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import java.util.List; import org.junit.Before; import org.junit.Test; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; public class FluentIterableTest { private Person person1; private Person person2; private Person person3; private Person person4; private List<Person> personList; @Before public void setUp() throws Exception { person1 = new Person("Liu", "Bei", 30, "F"); person2 = new Person("Guan", "Yu", 32, "M"); person3 = new Person("Zhang", "Fei", 31, "F"); person4 = new Person("Zhao", "Yun", 33, "M"); personList = Lists.newArrayList(person1, person2, person3, person4); } @Test public void testFilter() { FluentIterable<Person> personsFilteredByAge = FluentIterable.from(personList).filter(new Predicate<Person>() { @Override public boolean apply(Person input) { return input.getAge() > 31; } }); assertThat(Iterables.contains(personsFilteredByAge, person1), equalTo(false)); assertThat(Iterables.contains(personsFilteredByAge, person2), equalTo(true)); assertThat(Iterables.contains(personsFilteredByAge, person3), equalTo(false)); assertThat(Iterables.contains(personsFilteredByAge, person4), equalTo(true)); } @Test public void testTransform() { List<String> transformedPersonList = FluentIterable.from(personList).transform(new Function<Person, String>() { @Override public String apply(Person input) { return Joiner.on("#").join(input.getFirstname(), input.getLastname(), input.getAge()); } }).toList(); assertThat(transformedPersonList.get(1), equalTo("Guan#Yu#32")); assertThat(transformedPersonList.get(3), equalTo("Zhao#Yun#33")); } @Test public void testPartition() { List<List<Person>> subList = Lists.partition(personList, 2); subList.forEach(p -> System.out.println(p)); subList = Lists.partition(personList, 3); subList.forEach(p -> System.out.println(p)); } }