JavaGuava,Apache和Eclipse集合中的Multimap
示例
此多图允许重复的键值对。JDK类似物是HashMap<K,List>,HashMap<K,Set>等。
使用多图的示例
任务:解析“HelloWorld!大家好!HiWorld!”字符串以分隔单词并使用MultiMap打印每个单词的所有索引(例如,Hello=[0,2],World!=[1,5],依此类推)
1.来自Apache的MultiValueMap
String INPUT_TEXT = "Hello World! Hello All! Hi World!"; //将文本解析为单词和索引 List<String> words = Arrays.asList(INPUT_TEXT.split(" ")); //创建多图 MultiMap<String, Integer> multiMap = new MultiValueMap<String, Integer>(); //填充多图 int i = 0; for(String word: words) { multiMap.put(word, i); i++; } //打印所有单词 System.out.println(multiMap); //打印{Hi=[4],Hello=[0,2],世界!=[1,5],全部!=[3]}-按随机顺序 //打印所有唯一的单词 System.out.println(multiMap.keySet()); //打印[嗨,您好,世界!,全部!]-随机订购 //打印所有索引 System.out.println("Hello = " + multiMap.get("Hello")); //打印[0,2] System.out.println("World = " + multiMap.get("World!")); //打印[1,5] System.out.println("All = " + multiMap.get("All!")); //打印[3] System.out.println("Hi = " + multiMap.get("Hi")); //打印[4] System.out.println("Empty = " + multiMap.get("Empty")); //打印空 //打印计数唯一词 System.out.println(multiMap.keySet().size()); //打印4
2.来自GS/EclipseCollection的HashBiMap
String[] englishWords = {"one", "two", "three","ball","snow"}; String[] russianWords = {"jeden", "dwa", "trzy", "kula", "snieg"}; //创建多集 MutableBiMap<String, String> biMap = new HashBiMap(englishWords.length); //创建英语-波兰语字典 int i = 0; for(String englishWord: englishWords) { biMap.put(englishWord, russianWords[i]); i++; } //打印字数 System.out.println(biMap); //打印{two=dwa,ball=kula,one=jeden,snow=snieg,three=trzy}-按随机顺序 //打印所有唯一的单词 System.out.println(biMap.keySet()); //打印[雪,二,一,三,球]-随机排列 System.out.println(biMap.values()); //打印[dwa,kula,jeden,snieg,trzy]-随机排列 //打印文字翻译 System.out.println("one = " + biMap.get("one")); //打印一个=jeden System.out.println("two = " + biMap.get("two")); //打印两个=dwa System.out.println("kula = " + biMap.inverse().get("kula")); //打印库拉=球 System.out.println("snieg = " + biMap.inverse().get("snieg")); //打印snieg=雪 System.out.println("empty = " + biMap.get("empty")); //打印空=空 //打印数词对 System.out.println(biMap.size()); //打印5
来自Guava的HashMultiMap
StringINPUT_TEXT="HelloWorld!HelloAll!HiWorld!";
//将文本解析为单词和索引
List<String>words=Arrays.asList(INPUT_TEXT.split(""));
//创建多图
Multimap<String,Integer>multiMap=HashMultimap.create();
//填充多图
inti=0;
for(Stringword:words){
multiMap.put(word,i);
i++;
}
//打印所有单词
System.out.println(multiMap);//打印{Hi=[4],Hello=[0、2],World!=[1、5],All!=[3]}-键和值以随机顺序排列
//打印所有唯一的单词
System.out.println(multiMap.keySet()); //打印[嗨,您好,世界!,全部!]-随机订购
//打印所有索引
System.out.println("Hello="+multiMap.get("Hello")); //打印[0,2]
System.out.println("World="+multiMap.get("World!")); //打印[1,5]
System.out.println("All="+multiMap.get("All!")); //打印[3]
System.out.println("Hi="+multiMap.get("Hi")); //打印[4]
System.out.println("Empty="+multiMap.get("Empty")); //打印[]
//打印所有单词
System.out.println(multiMap.size()); //打印6
//打印计数唯一词
System.out.println(multiMap.keySet().size()); //打印4
否示例:
I.Apache集合:
MultiValueMap
MultiValueMapLinked
MultiValueMapTree
二。GS/Eclipse系列
FastListMultimap
HashBagMultimap
TreeSortedSetMultimap
UnifiedSetMultimap
三,番石榴
HashMultiMap
LinkedHashMultimap
LinkedListMultimap
TreeMultimap
ArrayListMultimap