继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

google guava的Multimaps:一键多值的Map

波斯汪
关注TA
已关注
手记 364
粉丝 66
获赞 428

有时候我们需要这样的数据类型Map<String,Collection<String>>,guava中的Multimap就是为了解决这类问题的。

Multimap的实现

Multimap提供了丰富的实现,所以你可以用它来替代程序里的Map<K, Collection<V>>,具体的实现如下:

实现Key实现Value实现
ArrayListMultimapHashMapArrayList
HashMultimapHashMapHashSet
LinkedListMultimapLinkedHashMapLinkedList
LinkedHashMultimapLinkedHashMapLinkedHashSet
TreeMultimapTreeMapTreeSet
ImmutableListMultimapImmutableMapImmutableList
ImmutableSetMultimapImmutableMapImmutableSet

我们通过一个示例来了解Multimap的使用方法:

public class MutliMapTest {  
    public static void main(String... args) {  
  Multimap<String, String> myMultimap = ArrayListMultimap.create();  
    
  // 添加键值对  myMultimap.put("Fruits", "Bannana");  //给Fruits元素添加另一个元素   myMultimap.put("Fruits", "Apple");  
  myMultimap.put("Fruits", "Pear");  
  myMultimap.put("Vegetables", "Carrot");  
    
  // 获得multimap的size  int size = myMultimap.size();  
  System.out.println(size);  // 4      
  // 获得Fruits对应的所有的值  Collection<string> fruits = myMultimap.get("Fruits");  
  System.out.println(fruits); // [Bannana, Apple, Pear]      
  Collection<string> vegetables = myMultimap.get("Vegetables");  
  System.out.println(vegetables); // [Carrot]      
  //遍历Mutlimap    for(String value : myMultimap.values()) {  
   System.out.println(value);  
  }  
    
  // Removing a single value    myMultimap.remove("Fruits","Pear");  
  System.out.println(myMultimap.get("Fruits")); // [Bannana, Pear]      
  // Remove all values for a key    myMultimap.removeAll("Fruits");  
  System.out.println(myMultimap.get("Fruits")); // [] (Empty Collection!)  }  }

原文链接:http://outofmemory.cn/java/guava/Collections/Multimaps

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP