鍍金池/ 教程/ Java/ Guava Multimap類
Guava原語工具
Guava集合工具
Guava Chars類
Guava Shorts類
Guava CharMatcher類
Guava BigIntegerMath類
Guava Range類
Guava Bimap接口
Guava緩存工具
Guava Longs類
Guava Multiset接口
Guava Table接口
Guava Optional類
Guava LongMath類
Guava Spiltter類
Guava Preconditions類
Guava數(shù)學(xué)工具
Guava Ints類
Guava Ordering類
Guava Throwables類
Guava字符串工具
Guava Objects類
Guava Booleans類
Guava教程
Guava Bytes類
Guava CaseFormat類
Guava環(huán)境設(shè)置
Guava Doubles類
Guava Joiner類
Guava Multimap類
Guava Floats類
Guava IntMath類

Guava Multimap類

多重映射接口擴(kuò)展映射,使得其鍵一次可被映射到多個(gè)值。

接口聲明

以下是com.google.common.collect.Multimap<K,V>接口的聲明:

@GwtCompatible
public interface Multimap<K,V>

接口方法

S.N. 方法及說明
1 Map<K,Collection<V>> asMap()
返回此multimap中的視圖,從每個(gè)不同的鍵在鍵的關(guān)聯(lián)值的非空集合映射。
2 void clear()
將刪除所有multimap中的鍵值對(duì),留下空。
3 boolean containsEntry(Object key, Object value)
返回true如果此多重映射包含至少一個(gè)鍵 - 值對(duì)用鍵鍵和值value。
4 boolean containsKey(Object key)
返回true,如果這個(gè)multimap中至少包含一個(gè)鍵值對(duì)的鍵key。
5 boolean containsValue(Object value)
返回true,如果這個(gè)multimap至少包含一個(gè)鍵值對(duì)的值值。
6 Collection<Map.Entry<K,V>> entries()
返回包含在此multimap中,為Map.Entry的情況下,所有的鍵 - 值對(duì)的視圖集合。
7 boolean equals(Object obj)
比較指定對(duì)象與此多重映射是否相等。
8 Collection<V> get(K key)
返回,如果有的話,在這個(gè)multimap中鍵關(guān)聯(lián)的值的視圖集合。
9 int hashCode()
返回此多重映射的哈希碼。
10 boolean isEmpty()
返回true,如果這個(gè)multimap中未包含鍵 - 值對(duì)。
11 Multiset<K> keys()
返回一個(gè)視圖集合包含從每個(gè)鍵值對(duì)這個(gè)multimap中的關(guān)鍵,沒有折疊重復(fù)。
12 Set<K> keySet()
Returns a view collection of all distinct keys contained in this multimap.
13 boolean put(K key, V value)
存儲(chǔ)鍵 - 值對(duì)在這個(gè)multimap中。
14 boolean putAll(K key, Iterable<? extends V> values)
存儲(chǔ)一個(gè)鍵 - 值對(duì)在此multimap中的每個(gè)值,都使用相同的鍵 key。
15 boolean putAll(Multimap<? extends K,? extends V> multimap)
存儲(chǔ)了所有鍵 - 值對(duì)多重映射在這個(gè)multimap中,通過返回 multimap.entries() 的順序.
16 boolean remove(Object key, Object value)
刪除一個(gè)鍵 - 值對(duì)用鍵鍵,并從該多重映射的值的值,如果這樣的存在。
17 Collection<V> removeAll(Object key)
刪除與鍵鍵關(guān)聯(lián)的所有值。
18 Collection<V> replaceValues(K key, Iterable<? extends V> values)
存儲(chǔ)與相同的鍵值,替換任何現(xiàn)有值的鍵的集合。
19 int size()
返回此多重映射鍵 - 值對(duì)的數(shù)量。
20 Collection<V> values()
返回一個(gè)視圖集合包含從包含在該multimap中的每個(gè)鍵 - 值對(duì)的值,而不發(fā)生重復(fù) (so values().size() == size()).

Multimap 示例

使用所選擇的任何編輯器創(chuàng)建下面的java程序 C:/> Guava

GuavaTester.java
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;

public class GuavaTester {
   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      Multimap<String,String> multimap = tester.getMultimap();

      List<String> lowerList = (List<String>)multimap.get("lower");
      System.out.println("Initial lower case list");
      System.out.println(lowerList.toString());
      lowerList.add("f");
      System.out.println("Modified lower case list");
      System.out.println(lowerList.toString());

      List<String> upperList = (List<String>)multimap.get("upper");
      System.out.println("Initial upper case list");
      System.out.println(upperList.toString());
      upperList.remove("D");
      System.out.println("Modified upper case list");
      System.out.println(upperList.toString());

      Map<String, Collection<String>> map = multimap.asMap();
      System.out.println("Multimap as a map");
      for (Map.Entry<String,  Collection<String>> entry : map.entrySet()) {
         String key = entry.getKey();
         Collection<String> value =  multimap.get("lower");
         System.out.println(key + ":" + value);
      }

      System.out.println("Keys of Multimap");
      Set<String> keys =  multimap.keySet();
      for(String key:keys){
         System.out.println(key);
      }

      System.out.println("Values of Multimap");
      Collection<String> values = multimap.values();
      System.out.println(values);
   }	

   private Multimap<String,String> getMultimap(){
      //Map<String, List<String>>
      // lower -> a, b, c, d, e 
      // upper -> A, B, C, D

      Multimap<String,String> multimap = ArrayListMultimap.create();		

      multimap.put("lower", "a");
      multimap.put("lower", "b");
      multimap.put("lower", "c");
      multimap.put("lower", "d");
      multimap.put("lower", "e");

      multimap.put("upper", "A");
      multimap.put("upper", "B");
      multimap.put("upper", "C");
      multimap.put("upper", "D");		
      return multimap;		
   }
}

驗(yàn)證結(jié)果

使用javac編譯器編譯如下類

C:\Guava>javac GuavaTester.java

現(xiàn)在運(yùn)行GuavaTester看到的結(jié)果

C:\Guava>java GuavaTester

看到結(jié)果。

Initial lower case list
[a, b, c, d, e]
Modified lower case list
[a, b, c, d, e, f]
Initial upper case list
[A, B, C, D]
Modified upper case list
[A, B, C]
Multimap as a map
upper:[a, b, c, d, e, f]
lower:[a, b, c, d, e, f]
Keys of Multimap
upper
lower
Values of Multimap
[A, B, C, a, b, c, d, e, f]

上一篇:Guava Bimap接口下一篇:Guava Objects類