Guava 中List简介
Contents
1. 概述
在本教程中——我们将说明使用 Guava 库处理列表的最常见和最有用的方法。
让我们从简单的开始——看看使用 Guava 语法创建一个新的ArrayList——没有用new:
List<String> names = Lists.newArrayList("John", "Adam", "Jane");
2. 反转List
首先,让我们使用Lists.reverse()反转一个List,如下例所示:
@Test
public void whenReverseList_thenReversed() {
List<String> names = Lists.newArrayList("John", "Adam", "Jane");
List<String> reversed = Lists.reverse(names);
assertThat(reversed, contains("Jane", "Adam", "John"));
}
3.从String生成Characters列表
现在 - 让我们看看如何将 String 拆分为Characters列表。
在以下示例中——我们使用Lists.CharactersOf() API从字符串*“John”创建Characters*列表:
@Test
public void whenCreateCharacterListFromString_thenCreated() {
List<Character> chars = Lists.charactersOf("John");
assertEquals(4, chars.size());
assertThat(chars, contains('J', 'o', 'h', 'n'));
}
4. 对List进行分区
接下来——让我们看看如何对List进行分区 。
在下面的示例中——我们使用*Lists.partition()*来获取每个大小为 2 的连续子列表:
@Test
public void whenPartitionList_thenPartitioned(){
List<String> names = Lists.newArrayList("John","Jane","Adam","Tom","Viki","Tyler");
List<List<String>> result = Lists.partition(names, 2);
assertEquals(3, result.size());
assertThat(result.get(0), contains("John", "Jane"));
assertThat(result.get(1), contains("Adam", "Tom"));
assertThat(result.get(2), contains("Viki", "Tyler"));
}
5. 从List中删除重复项
现在 - 让我们使用一个简单的技巧从List中删除重复项。
在下面的示例中——我们将元素复制到Set中,然后从剩余元素中创建一个List :
@Test
public void whenRemoveDuplicatesFromList_thenRemoved() {
List<Character> chars = Lists.newArrayList('h','e','l','l','o');
assertEquals(5, chars.size());
List<Character> result = ImmutableSet.copyOf(chars).asList();
assertThat(result, contains('h', 'e', 'l', 'o'));
}
6. 从List中删除空值
接下来——让我们看看如何从List中删除null值**。
在下面的示例中——我们使用非常有用的Iterables.removeIf() API 和库本身提供的谓词删除所有null:
@Test
public void whenRemoveNullFromList_thenRemoved() {
List<String> names = Lists.newArrayList("John", null, "Adam", null, "Jane");
Iterables.removeIf(names, Predicates.isNull());
assertEquals(3, names.size());
assertThat(names, contains("John", "Adam", "Jane"));
}
7. 将List转换为ImmutableList
最后——让我们看看如何使用ImmutableList.copyOf() API创建List的不可变副本——ImmutableList:
@Test
public void whenCreateImmutableList_thenCreated() {
List<String> names = Lists.newArrayList("John", "Adam", "Jane");
names.add("Tom");
assertEquals(4, names.size());
ImmutableList<String> immutable = ImmutableList.copyOf(names);
assertThat(immutable, contains("John", "Adam", "Jane", "Tom"));
}