Guava 集合工具类 Multimaps
提供作用于或生成 Multimap
的静态方法。
一、接口声明
以下是 com.google.common.collect.Multimaps
接口的声明:
@GwtCompatible(emulated=true) public final class Multimaps extends Object
二、接口方法
官方文档:https://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/collect/Multimaps.html
修饰符和类型 | 方法描述 |
---|---|
static <K,V>Map<K,List<V>> | asMap(ListMultimap<K,V> multimap) 返回 multimap.asMap() 视图,从类型 Map<k, collection |
static <K,V>Map<K,Collection<V>> | asMap(Multimap<K,V> multimap) 返回 multimap.asMap() 视图. |
static <K,V>Map<K,Set<V>> | asMap(SetMultimap<K,V> multimap) 返回 multimap.asMap() 视图,从类型 Map<k, collection |
static <K,V>Map<K,SortedSet<V>> | asMap(SortedSetMultimap<K,V> multimap) 返回 multimap.asMap() 视图, 从类型 Map<k, collection |
static <K,V>Multimap<K,V> | filterEntries(Multimap<K,V> unfiltered, Predicate<? super Map.Entry<K,V>> entryPredicate) 返回给定unfilteredMap.Entry中的Entry值通过给定entryPredicate过滤后的map. |
static <K,V>SetMultimap<K,V> | filterEntries(SetMultimap<K,V> unfiltered, Predicate<? superMap.Entry<K,V>> entryPredicate) 返回给定unfilteredMap.Entry中的Entry值通过给定entryPredicate过滤后的map. |
static <K,V>ListMultimap<K,V> | filterKeys(ListMultimap<K,V> unfiltered, Predicate<? super K>keyPredicate) 返回给定unfilteredMap中的Key值通过给定keyPredicate过滤后的Map. |
static <K,V>Multimap<K,V> | filterKeys(Multimap<K,V> unfiltered, Predicate<? super K> keyPredicate) 返回给定unfilteredMap中的Key值通过给定keyPredicate过滤后的Map. |
static <K,V>SetMultimap<K,V> | filterKeys(SetMultimap<K,V> unfiltered, Predicate<? super K> keyPredicate) 返回给定unfilteredMap中的Key值通过给定keyPredicate过滤后的Map. |
static <K,V>Multimap<K,V> | filterValues(Multimap<K,V> unfiltered, Predicate<? super V>valuePredicate) 返回给定unfilteredMap中的Valie值通过给定keyPredicate过滤后的Map. |
static <K,V>SetMultimap<K,V> | filterValues(SetMultimap<K,V> unfiltered, Predicate<? super V>valuePredicate) 返回给定unfilteredMap中的Value值通过给定keyPredicate过滤后的Map. |
static <T,K,V,M extendsMultimap<K,V>> Collector<T,?,M> | flatteningToMultimap(Function<? super T,? extends K> keyFunction, Function<? super T,? extends Stream<? extends V>> valueFunction, Supplier<M>multimapSupplier) 通过函数过滤,返回 Collector |
static <K,V>SetMultimap<K,V> | forMap(Map<K,V> map) 为特定的map返回 multimap 视图. |
static <K,V>ImmutableListMultimap<K,V> | index(Iterable<V> values, Function<? super V,K> keyFunction) 创建一个索引ImmutableListMultimap,其中包含将指定函数应用于Iterable值中的每个项的结果. |
static <K,V>ImmutableListMultimap<K,V> | index(Iterator<V> values, Function<? super V,K> keyFunction) 创建一个索引ImmutableListMultimap,其中包含将指定函数应用于Iterator值中的每个项的结果. |
static <K,V,M extendsMultimap<K,V>> M | invertFrom(Multimap<? extends V,? extends K> source, M dest) 将源中的每个键值映射复制到dest,其键和值相反. |
static <K,V>ListMultimap<K,V> | newListMultimap(Map<K,Collection<V>> map, Supplier<? extends List<V>> factory) 根据提供的factory工厂类,创建一个 ListMultimap. |
static <K,V>Multimap<K,V> | newMultimap(Map<K,Collection<V>> map, Supplier<? extends Collection<V>> factory) 根据提供的factory工厂类,创建一个 Multimap. |
static <K,V>SetMultimap<K,V> | newSetMultimap(Map<K,Collection<V>> map, Supplier<? extends Set<V>> factory) 根据提供的factory工厂类,创建一个 SetMultimap . |
static <K,V>SortedSetMultimap<K,V> | newSortedSetMultimap(Map<K,Collection<V>> map, Supplier<? extendsSortedSet<V>> factory) 根据提供的factory工厂类,创建一个 SortedSetMultimap. |
static <K,V>ListMultimap<K,V> | synchronizedListMultimap(ListMultimap<K,V> multimap) 返回由指定的multimap支持的synchronized(线程安全)ListMultimap. |
static <K,V>Multimap<K,V> | synchronizedMultimap(Multimap<K,V> multimap) 返回 由指定的multimap支持的synchronized(线程安全)multimap. |
static <K,V>SetMultimap<K,V> | synchronizedSetMultimap(SetMultimap<K,V> multimap) 返回一个由指定的multimap支持的synchronized(线程安全)SetMultimap. |
static <K,V>SortedSetMultimap<K,V> | synchronizedSortedSetMultimap(SortedSetMultimap<K,V> multimap) 返回一个由指定的multimap支持的synchronized(线程安全)SortedSetMultimap. |
static <T,K,V,M extendsMultimap<K,V>> Collector<T,?,M> | toMultimap(Function<? super T,? extends K> keyFunction, Function<? superT,? extends V> valueFunction,Supplier<M> multimapSupplier) 通过函数过滤,返回 Collector. |
static <K,V1,V2>ListMultimap<K,V2> | transformEntries(ListMultimap<K,V1> fromMap, Maps.EntryTransformer<? superK,? super V1,V2> transformer) 返回 ListMultimap 视图,其Entry为给定fromMap.Entry通过给定EntryTransformer转换后的值. |
static <K,V1,V2>Multimap<K,V2> | transformEntries(Multimap<K,V1> fromMap, Maps.EntryTransformer<? super K,?super V1,V2> transformer) 返回 multimap 视图,其Entry为给定fromMap.Entry通过给定EntryTransformer转换后的值. |
static <K,V1,V2>ListMultimap<K,V2> | transformValues(ListMultimap<K,V1> fromMultimap, Function<? super V1,V2>function) 返回ListMultimap的视图,其中每个值由函数转换. |
static <K,V1,V2>Multimap<K,V2> | transformValues(Multimap<K,V1> fromMultimap, Function<? super V1,V2>function) 返回 multimap 视图,其中每个值由函数转换. |
static <K,V>ListMultimap<K,V> | unmodifiableListMultimap(ImmutableListMultimap<K,V> delegate) 已过时。 |
static <K,V>ListMultimap<K,V> | unmodifiableListMultimap(ListMultimap<K,V> delegate) 返回指定ListMultimap的n个不可修改的视图. |
static <K,V>Multimap<K,V> | unmodifiableMultimap(ImmutableMultimap<K,V> delegate) 已过时。 |
static <K,V>Multimap<K,V> | unmodifiableMultimap(Multimap<K,V> delegate) 返回指定multimap的n个不可修改视图. |
static <K,V>SetMultimap<K,V> | unmodifiableSetMultimap(ImmutableSetMultimap<K,V> delegate) 已过时。 |
static <K,V>SetMultimap<K,V> | unmodifiableSetMultimap(SetMultimap<K,V> delegate) 返回指定SetMultima的n个不可修改的视图p. |
static <K,V>SortedSetMultimap<K,V> | unmodifiableSortedSetMultimap(SortedSetMultimap<K,V> delegate) 返回指定SortedSetMultimap的n个不可修改的视图. |
三、测试类
package com.example.guava.collect; import com.google.common.collect.*; import org.junit.Test; public class MultimapsTest { @Test public void asMap() { ListMultimap<String, String> listMultimap = LinkedListMultimap.create(); listMultimap.put("foo", "A"); listMultimap.put("foo", "B"); listMultimap.put("foo", "C"); // 遍历 listMultimap.forEach((k, v) -> System.out.println("k:" + k + ", v:" + v)); System.out.println(listMultimap); } @Test public void containsOccurrences(){ Multiset<String> set1 = HashMultiset.create(); set1.add("a", 2); set1.add("b"); set1.add("b"); Multiset<String> set2 = HashMultiset.create(); set2.add("a", 5); System.out.println(set1.containsAll(set2)); // true System.out.println(Multisets.containsOccurrences(set1, set2)); // returns false System.out.println(set2.remove("a",2)); // 5 System.out.println(set2.size()); // 3 System.out.println(set2.removeAll(set1)); // true System.out.println(set2.size()); // 0 System.out.println(set2.isEmpty()); // true } @Test public void copyHighestCountFirst(){ Multiset<String> multiset = HashMultiset.create(); multiset.add("a", 3); multiset.add("b", 5); multiset.add("c", 1); multiset.add("a"); multiset.add("a"); multiset.add("a"); System.out.println(multiset.count("a")); // 6 System.out.println(multiset.size()); // 12 ImmutableMultiset<String> highestCountFirst = Multisets.copyHighestCountFirst(multiset); System.out.println(highestCountFirst.size()); // 12 System.out.println(highestCountFirst.entrySet()); // [a x 6, b x 5, c] System.out.println(highestCountFirst.elementSet()); // [a, b, c] } @Test public void retainOccurrences(){ Multiset<String> set1 = HashMultiset.create(); set1.add("a", 2); set1.add("b"); set1.add("b"); Multiset<String> set2 = HashMultiset.create(); set2.add("a", 5); System.out.println(set1); // [a x 2, b x 2] System.out.println(set2); // [a x 5] Multisets.retainOccurrences(set1, set2); System.out.println("\n"+set1); // [a x 2] System.out.println(set2); // [a x 5] } @Test public void difference_sum_union(){ Multiset<String> set1 = HashMultiset.create(); set1.add("a", 3); set1.add("b", 2); set1.add("c", 1); Multiset<String> set2 = HashMultiset.create(); set2.add("a"); set2.add("c"); set2.add("e"); // 差集 Multiset<String> differenceSet = Multisets.difference(set1, set2); System.out.println(differenceSet); // [a x 2, b x 2] // 合集 Multiset<String> sumSet = Multisets.sum(set1, set2); System.out.println(sumSet); // [a x 4, b x 2, c x 2, e] // 并集 Multiset<String> unionSet = Multisets.union(set1, set2); System.out.println(unionSet); // [a x 3, b x 2, c, e] } }
四、相关文章
未经允许请勿转载:程序喵 » Google Guava 快速入门 —— 【集合工具】Multimaps 类