`

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

 

分享到:
评论

相关推荐

    google guava23.5

    - **Immutable Collections**:不可变的集合类,确保一旦创建就不能被修改,提供线程安全。 - **BiMap**:双向映射,允许在键和值之间进行双向查找。 - **Table**:二维表格数据结构,用于存储键-键对的数据。 2...

    guava collection简介1

    除了以上提到的功能,Guava Collections 还包含许多其他实用工具,如 Predicates、Functions 和 Lists 等,帮助开发者写出更简洁、更可读的代码。这些经过精心设计和充分测试的 API,大大提升了开发效率,减少了潜在...

    java8-guava-comparation:Guava 和 Java 8 Stream API 的比较

    Guava 的 Iterables 和 Collections2 类提供了类似 Stream 的操作,但语法和功能上有所不同。例如,以下代码使用 Guava 过滤和转换列表: ```java List&lt;String&gt; names = Lists.newArrayList("Alice", "Bob", ...

    Google Guava 30.1.1常用类介绍及实践代码

    List&lt;Integer&gt; lengths = Lists.transform(Arrays.asList("abc", "def"), lengthExtractor); ``` 以上只是 Guava 30.1.1 版本中的一部分核心功能,实际使用中还有许多其他实用工具类,如 `Range`, `EventBus`, `...

    google-collections jar包

    Google Collections(Guava)库不仅限于`Maps`模块,还包括`Lists`、`Sets`、`Multisets`、`Iterators`等多个子模块,它们都提供了丰富的功能和优化,使得Java编程更加简洁和高效。在实际开发中,熟练掌握并运用这些...

    google-collections.zip

    总之,Google Collections(现在的 Guava)为 Java 开发者提供了大量实用工具和集合扩展,提高了代码的可读性、效率和安全性。无论是进行简单的数据操作还是设计复杂的系统,这个库都是一把不可或缺的利器。

    guava-light:简易版的番石榴,其包装分为不同的目标(专为Android设计)

    guava-collect-base:收集的基类(Collections2,Lists,Iterables ...)-大小约75Kb请注意,与不可变相关的类将出现在另一个包中 ...更多 执照 Copyright 2015 Romain Piel Licensed under the Apache License, ...

    Getting Started with Google Guava code

    1. **集合框架增强**:Guava 提供了丰富的集合类,如 Multiset(多集合)、Multimap(多映射)、Immutable collections(不可变集合)等,这些集合在功能和性能上都优于 Java 标准库中的集合。 2. **缓存**:Guava ...

    guava参考文档

    - **Immutable collections**: 提供了不可变的List、Set和Map实现,保证了线程安全,适合于创建常量或配置数据。 - **Table**: 一个二维的键值对集合,可以将两个键关联起来,用于存储表格类型的数据。 2. **并发...

    java基础 集合-26-Guava开源组件使用(4)

    6. **并发工具**:Guava包含了如Lists.newCopyOnWriteArrayList、Sets.newConcurrentHashSet等线程安全的集合实现,以及CountDownLatch、CyclicBarrier、Semaphore等并发控制工具,为多线程编程提供了便利。...

    guava_programming.zip

    List&lt;String&gt; stringList = Collections2.transform(strings, new Function, String&gt;() { @Override public String apply(Integer input) { return input.toString(); } }); ``` 在Java 8之后,我们可以使用...

    Guava教程1使用GoogleCollections,G

    **Guava教程1:使用Google Collections** 在Java开发中,Google Collections(现称为Guava库)是一个非常重要的工具集,它极大地丰富了标准Java库的功能,提供了许多实用的数据结构、集合操作、并发工具以及字符串...

    google common jar包

    这个"google-collections-1.0.jar"文件就是谷歌Common库的一个早期版本,它在2007年首次发布,是Google Collections Library的前身,后来演变为Guava库。 在"google-collections-1.0.jar"中,我们可以找到许多关键...

    开源架包guava

    Guava的ImmutableCollections(不可变集合)是线程安全且不可修改的,适用于创建常量或配置类。 其次,Guava的缓存功能允许开发者轻松地在应用程序中实现本地缓存策略,提高性能并减少对远程服务的调用。...

    Guava教程(4)条件,多重映射和分片Java开发Jav

    Guava的`Lists.partition()`方法允许我们将一个大列表分割成多个小列表,每个小列表的大小可以指定。这对于批量处理大列表,或者在多线程环境中并行处理数据非常有帮助。例如,如果我们有一个包含100个元素的列表,...

    com.google.common.collect jar包

    List&lt;String&gt; unmodifiableList = Lists.newArrayList(Collections.unmodifiableList(originalList)); ``` 除了`newArrayList`,`com.google.common.collect`包还提供了许多其他强大的工具,如`ImmutableList`、`...

    googlecollections

    首先,Google Collections库,现已被更名为Guava,是Google提供的一套强大的Java工具类库。它包含了大量对Java集合框架的扩展,如Multiset、Multimap、ImmutableList等,还有许多实用的函数式编程工具,如Predicates...

    googlecollections1.0.rar

    - **Collections2**、**Lists**、**Sets**等工具类:提供了许多便利的静态方法,如排序、转换、过滤等。 4. **学习与实践** 学习Google Collections 1.0,开发者可以深入理解如何利用这些高级数据结构和工具来...

    不可变对象ImmutableXXX:Collection、List、Set、Map…

    它们在很多场景下能够替代Java标准库中的`Collections.unmodifiable*`方法,提供更强的类型安全性和性能。 使用不可变集合有以下好处: - **线程安全**:不可变对象天生就是线程安全的,可以减少在多线程环境中的...

    guavaTest:测试

    Guava的Iterables、Lists和Collections2等类提供了丰富的操作序列的方法,如filter、transform和apply等。 7. **事件监听** Guava的EventBus是一种简单的发布-订阅事件总线,可以方便地实现组件间的松耦合通信。 ...

Global site tag (gtag.js) - Google Analytics