您的位置:首页 > 其它

HashMultimap

2015-11-02 09:50 267 查看
代码:

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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: