鍍金池/ 教程/ 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ù)學工具
Guava Ints類
Guava Ordering類
Guava Throwables類
Guava字符串工具
Guava Objects類
Guava Booleans類
Guava教程
Guava Bytes類
Guava CaseFormat類
Guava環(huán)境設置
Guava Doubles類
Guava Joiner類
Guava Multimap類
Guava Floats類
Guava IntMath類

Guava Multimap類

多重映射接口擴展映射,使得其鍵一次可被映射到多個值。

接口聲明

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

@GwtCompatible
public interface Multimap<K,V>

接口方法

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

驗證結(jié)果

使用javac編譯器編譯如下類

C:\Guava>javac GuavaTester.java

現(xià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類