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));
}
}