Multimap
Multimap 是 Google 的 Guava 库为 Java 引入的一种新集合类型,它允许将多个值存储在单个键下。它被设计为一种替代 Map<K, List> 或 Map<K, Set>(JDK 标准集合框架)的方案。
Multimap<K, V> 扩展了 AbstractMultimap<K, V>,并提供了添加、删除和访问与键相关值的方法。它还允许您高效地执行像 putAll(Map<K, V> m)、removeAll(Collection<? extends V> c) 和 retainAll(Collection<? extends V> c) 这样的批量操作,这使得它在需要处理单个键下的多个值的场景中特别有用。
Multimap 的一些关键特性包括:
- 为单个键存储多个值。
- 提供添加、删除和访问值的高效方法。
- 支持批量操作,如 putAll、removeAll 和 retainAll。
- 实现了 Multimap 接口,提供了额外的方法,如 keys()、values() 和 entries()。
- 在许多用例中可以作为
Map<K, List> 或 Map<K, Set> 的替代品。
插入值
Multimap<Object, Object> multiMap = ArrayListMultimap.create();//插入值multiMap.put("研发部","张三");multiMap.put("研发部","李四");multiMap.put("研发部","李四");multiMap.put("研发部","王五");multiMap.put("研发部","王五");multiMap.put("研发部","铁蛋");multiMap.put("研发部","铁蛋");multiMap.put("研发部","张二和");multiMap.put("宣传部","宣传");multiMap.put("宣传部","宣传2");multiMap.get("研发部").add("张小凡");
查询
Collection<Object> name = multiMap.get("研发部");System.err.println(name);System.out.println(ImmutableSet.copyOf(name));
想要get返回List或者Set
在定义时可以定义为ListMultimap,SetMultimap和SortedSetMultimap等等
ArrayListMultimap<Object, Object> myMutlimap = ArrayListMultimap.create();myMutlimap.put("myKey","1");myMutlimap.put("myKey","2");myMutlimap.put("myKey","2");List<Object> myValues = myMutlimap.get("myKey");System.err.println(myValues);