Guava Collections - Lists

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

猜你喜欢

转载自agilestyle.iteye.com/blog/2288842