HashMultimap


代码:

package mapreduce.baozi.multiplemap;

import java.util.HashMap;
import java.util.HashSet;
import java.util.TreeMap;

import com.google.common.collect.HashMultimap;
import com.google.common.collect.TreeMultimap;
/**
 multimap 与 map 一样,都是使用红黑树对记录型的元素数据,按元素键值的比较关系,进行快速的插入、删除和检索操作,所不同的是 multimap 允许将具有重复键值的元素插入容器。在 multimap 容器中,元素的键值与元素的映照数据的映照关系,是多对多的,因此,multimap 称为多重映照容器。multimap 与 map 之间的多重特性差异,类似于 multiset 与 set 的多重特性差异。

HashMutliMap

STL中有MultiMap,而java的util包中并没有这个容器。
google的guava libary的包下有这个容器。

google类库的下载地址:http://code.google.com/p/guava-libraries/wiki/Release09。

import的路径是:com.google.common.collect.Multimap;
在这个包中google实现了一系列的接口和容器,Multimap是一个定义的接口,继承接口生成了许多的各种容器,非常方便。

继承Multimap有许多的Multimap变种。分别有:

1.ArrayListMultimap:
2.ForwardingMultimap:
3.HashMultimap:
4.ImmutableListMultimap:
5.ImmutableMultimap:
6.ImmutableSetMultimap:
7.LinkedHashMultimap:
8.LinkedListMultimap:
9.TreeMultimap:
 */
public class MultipleMapDemo {
	public static void main(String[] args) {
		System.out.println("hashMap:");
		HashMap<String, Integer> hashMap=new HashMap<String,Integer>();
		hashMap.put("hadoop", 23);
		hashMap.put("hadoop", 22);
		hashMap.put("spark", 56);
		hashMap.put("spark", 58);
		hashMap.put("storm", 78);
		hashMap.put("", 78);
		hashMap.put(null, 78);
		for(String demo:hashMap.keySet()){
			System.out.println(demo+"\t"+hashMap.get(demo));
		}
		System.out.println("\n"+"hashMultimap:");
		HashMultimap<String,Integer> hashMultimap = HashMultimap.create();
		hashMultimap.put("hadoop", 23);
		hashMultimap.put("hadoop", 22);
		hashMultimap.put("spark", 56);
		hashMultimap.put("spark", 58);
		hashMultimap.put("storm", 78);
		hashMultimap.put("", 78);
		hashMultimap.put(null, 78);
		for(String demo:hashMultimap.keySet()){
			System.out.println(demo+"\t"+hashMultimap.get(demo));
		}
		
		System.out.println("\n"+"HashSet:");
		HashSet<String> hashSet = new HashSet<>();
		hashSet.add("hadoop");
		hashSet.add("hadoop");
		hashSet.add("spark");
		hashSet.add("spark");
		hashSet.add("storm");
		hashSet.add("");
		hashSet.add(null);
		for(String str:hashSet ){
			System.out.println(str);
		}
		
		System.out.println("\n"+"TreeMap:");
		TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>();
		treeMap.put("hadoop", 23);
		treeMap.put("hadoop", 22);
		treeMap.put("spark", 56);
		treeMap.put("spark", 58);
		treeMap.put("storm", 78);
		treeMap.put("hive", 34);
		treeMap.put("kafka", 87);
		treeMap.put("", 78);
		//treeMap.put(null, 78);  //key不能为null
		for(String demo:treeMap.keySet()){
			System.out.println(demo+"\t"+treeMap.get(demo));
		}
		
		System.out.println("\n"+"TreeMultimap:");
		TreeMultimap<String,Integer> treeMultimap = TreeMultimap.create();
		treeMultimap.put("hadoop", 23);
		treeMultimap.put("hadoop", 22);
		treeMultimap.put("spark", 56);
		treeMultimap.put("spark", 58);
		treeMultimap.put("storm", 78);
		treeMultimap.put("hive", 34);
		treeMultimap.put("kafka", 87);
		treeMultimap.put("", 78);
		//treeMultimap.put(null, 78);  //key不能为null
		for(String demo:treeMultimap.keySet()){
			System.out.println(demo+"\t"+treeMultimap.get(demo));
		}
	}
}




输出:

hashMap:
null	78
	78
hadoop	22
storm	78
spark	58

hashMultimap:
null	[78]
	[78]
hadoop	[23, 22]
storm	[78]
spark	[58, 56]

HashSet:
null

hadoop
storm
spark

TreeMap:
	78
hadoop	22
hive	34
kafka	87
spark	58
storm	78

TreeMultimap:
	[78]
hadoop	[22, 23]
hive	[34]
kafka	[87]
spark	[56, 58]
storm	[78]





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值