Guava 集合工具类 Sets
提供 Set
实例有关的静态实用程序方法。
一、接口声明
以下是 com.google.common.collect.Sets
接口的声明:
@GwtCompatible(emulated=true) public final class Sets extends Object
二、接口方法
官方文档:https://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/collect/Sets.html
修饰符和类型 | 方法描述 |
---|---|
static <B> Set<List<B>> | cartesianProduct(List<? extends Set<? extends B>> sets) 返回通过从各给定集中选择一个元素所形成每一个可能的集合. |
static <B> Set<List<B>> | cartesianProduct(Set<? extends B>... sets) 返回通过从各给定集中选择一个元素所形成每一个可能的集合. |
static <E> Set<Set<E>> | combinations(Set<E> set, int size) 返回大小为set的所有子集的集合. |
static <E extends Enum<E>> EnumSet<E> | complementOf(Collection<E> collection) 创建一个EnumSet包括不属于指定集合中的所有枚举值. |
static <E extends Enum<E>> EnumSet<E> | complementOf(Collection<E> collection, Class<E> type) 创建一个EnumSet包括不属于指定集合中的所有枚举值. |
static <E> Sets.SetView<E> | difference(Set<E> set1, Set<?> set2) 返回两个set集合的差的不可修改SetView. |
static <E> NavigableSet<E> | filter(NavigableSet<E> unfiltered, Predicate<? super E> predicate) 返回传入NavigableSet集合unfiltered中满足给定Predicate的元素集合NavigableSet. |
static <E> Set<E> | filter(Set<E> unfiltered, Predicate<? super E> predicate) 返回传入Set集合unfiltered中满足给定Predicate的元素集合Set. |
static <E> SortedSet<E> | filter(SortedSet<E> unfiltered, Predicate<? super E> predicate) 返回传入SortedSet集合unfiltered中满足给定Predicate的元素集合SortedSet. |
static <E extends Enum<E>> ImmutableSet<E> | immutableEnumSet(E anElement, E... otherElements) 返回一个包含给定枚举元素的不可变的Set实例. |
static <E extends Enum<E>> ImmutableSet<E> | immutableEnumSet(Iterable<E> elements) 返回一个包含给定枚举元素的不可变的Set实例. |
static <E> Sets.SetView<E> | intersection(Set<E> set1, Set<?> set2) 返回两个set集合的交集的不可修改SetView. |
static <E> Set<E> | newConcurrentHashSet() 创建一个线程安全的Set,由ConcurrentHashMap的实例支持,因此进行了相同的并发性担保,与HashSet不同的是,这个Set不允许null元素,该Set是可序列化的. |
static <E> Set<E> | newConcurrentHashSet(Iterable<? extends E> elements) 创建一个线程安全的Set,由ConcurrentHashMap的实例支持,因此进行了相同的并发性担保,与HashSet不同的是,这个Set不允许null元素,该Set是可序列化的. |
static <E>CopyOnWriteArraySet<E> | newCopyOnWriteArraySet() 创建一个空的CopyOnWriteArraySet实例. |
static <E>CopyOnWriteArraySet<E> | newCopyOnWriteArraySet(Iterable<? extends E> elements) 创建一个包含给定元素的CopyOnWriteArraySet实例. |
static <E extends Enum<E>> EnumSet<E> | newEnumSet(Iterable<E> iterable, Class<E> elementType) 返回一个新的可变的EnumSet实例,该实例包含按自然顺序排列的给定元素. |
static <E> HashSet<E> | newHashSet() 返回一个可变的空的HashSet实例. |
static <E> HashSet<E> | newHashSet(E... elements) 返回一个可变买的HashSet包含给定的元素. |
static <E> HashSet<E> | newHashSet(Iterable<? extends E> elements) 返回一个可变的HashSet包含给定的元素,给定元素实现Iterable接口. |
static <E> HashSet<E> | newHashSet(Iterator<? extends E> elements) 返回一个可变的HashSet包含给定的元素,给定元素实现Iterator接口. |
static <E> HashSet<E> | newHashSetWithExpectedSize(int expectedSize) 构造一个期望长度为expectedSize的HashSet实例. |
static <E> Set<E> | newIdentityHashSet() 创建一个空的Set,使用特性来确定是否相等. |
static <E> LinkedHashSet<E> | newLinkedHashSet() 创建一个可变的、空的LinkedHashSet实例. |
static <E> LinkedHashSet<E> | newLinkedHashSet(Iterable<? extends E> elements) 构造一个包含给定元素的LinkedHashSet实例. |
static <E> LinkedHashSet<E> | newLinkedHashSetWithExpectedSize(int expectedSize) 构造一个期望长度为expectedSize的LinkedHashSet实例. |
static <E> Set<E> | newSetFromMap(Map<E,Boolean> map) 已过时. 请使用 Collections.newSetFromMap(java.util.Map |
static <E extends Comparable>TreeSet<E> | newTreeSet() 返回一个可变的空的TreeSet实例 |
static <E> TreeSet<E> | newTreeSet(Comparator<? super E> comparator) 创建一个具有给定的比较器可变TreeSet的实例. |
static <E extends Comparable>TreeSet<E> | newTreeSet(Iterable<? extends E> elements) 返回一个可变的包含给定元素的TreeSet实例. |
static <E> Set<Set<E>> | powerSet(Set<E> set) 返回一个set,包含给定set的所有可能父级集合. |
static <K extends Comparable<?super K>> NavigableSet<K> | subSet(NavigableSet<K> set, Range<K> range) 返回set的部分视图,其元素包含在range中。 |
static <E> Sets.SetView<E> | symmetricDifference(Set<? extends E> set1, Set<? extends E> set2) 返回两个set集合的对称差的不可修改SetView. |
static <E> NavigableSet<E> | synchronizedNavigableSet(NavigableSet<E> navigableSet) 返回一个同步的(线程安全的)NavigableSet,由指定的NavigableSet支持. |
static <E extends Enum<E>> Collector<E,?,ImmutableSet<E>> | toImmutableEnumSet() 返回一个收集器,它将输入元素累积到一个新的ImmutableSet中,并使用专门用于枚举的实现. |
static <E> Sets.SetView<E> | union(Set<? extends E> set1, Set<? extends E> set2) 返回两个set集合的并集的不可修改SetView. |
static <E> NavigableSet<E> | unmodifiableNavigableSet(NavigableSet<E> set) 返回指定NavigableSet的不可修改视图. |
三、测试类
package com.example.guava.collect; import com.google.common.base.Predicate; import com.google.common.collect.Sets; import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.Set; public class SetsTest { /** * filter:返回传入Set集合unfiltered中满足给定Predicate的元素集合Set */ @Test public void testFilter() { Set<String> set = Sets.newHashSet("i like u", "i miss u", "i love u"); Predicate<String> predicate = new Predicate<String>() { @Override public boolean apply(String input) { //过滤包含字母l的元素 return input.contains("l"); } }; System.out.println(Sets.filter(set, predicate)); // [i like u, i love u] System.out.println(Sets.filter(set, input -> input.contains("l"))); // [i like u, i love u] } /** * difference:返回两个set集合的差的不可修改SetView * A,B是两个集合,则所有属于A且不属于B的元素构成的集合,叫做A与B的差集 */ @Test public void testDifference() { Set<Integer> set1 = Sets.newHashSet(1, 2, 3, 4, 5); Set<Integer> set2 = Sets.newHashSet(1, 3, 5, 7, 9); System.out.println(Sets.difference(set1, set2)); // [2, 4] } /** * symmetricDifference:返回两个set集合的对称差的不可修改SetView * 对称差,即两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合 */ @Test public void testSymmetricDifference() { Set<Integer> set1 = Sets.newHashSet(1, 2, 3, 4, 5); Set<Integer> set2 = Sets.newHashSet(1, 3, 5, 7, 9); System.out.println(Sets.symmetricDifference(set1, set2)); // [2, 4, 9, 7] } /** * intersection:返回两个set集合的交集的不可修改SetView * 两个集合A和集合B的交集是指含有所有既属于A又属于B的元素,而没有其他元素的集合 */ @Test public void testIntersection() { Set<Integer> set1 = Sets.newHashSet(1, 2, 3, 4, 5); Set<Integer> set2 = Sets.newHashSet(1, 3, 5, 7, 9); System.out.println(Sets.intersection(set1, set2)); // [1, 3, 5] } /** * Union:返回两个set集合的并集的不可修改SetView * 若A和B是集合,则A和B并集是有所有A的元素和所有B的元素,而没有其他元素的集合 */ @Test public void testUnion() { Set<Integer> set1 = Sets.newHashSet(1, 2, 3, 4, 5); Set<Integer> set2 = Sets.newHashSet(1, 3, 5, 7, 9); System.out.println(Sets.union(set1, set2)); // [1, 2, 3, 4, 5, 9, 7] } /** * cartesianProduct:返回通过从各给定集中选择一个元素所形成每一个可能的集合 */ @Test public void testCartesianProduct() { Set<String> set1 = Sets.newHashSet("i love u", "i hate u"); Set<String> set2 = Sets.newHashSet("tom", "jerry"); Set<List<String>> sets = Sets.cartesianProduct(set1, set2); System.out.println(sets); // [[i hate u, tom], [i hate u, jerry], [i love u, tom], [i love u, jerry]] } /** * powerSet:返回一个set,包含给定set的所有可能父级集合 */ @Test public void testPowerSet() { Set<String> set1 = Sets.newHashSet("A", "B", "C"); Set<Set<String>> sets = Sets.powerSet(set1); // for (Set<String> set : sets) { // System.out.println(set); // } System.out.println(Arrays.toString(sets.toArray())); // [[], [A], [B], [A, B], [C], [A, C], [B, C], [A, B, C]] } }
四、相关文章
未经允许请勿转载:程序喵 » Google Guava 快速入门 —— 【集合工具】Sets 类