1 此实例需要导入两个jar包
一个是long包,导入StringUtils
一个是Collections包,导入MultiHashMap
具体实例:
package com.commons.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.collections.MultiHashMap;
import org.apache.commons.collections.MultiMap;
import org.apache.commons.lang.StringUtils;
public class MultiHashMapTest {
public static void main(String[] args) {
demoMultiMap();
}
/****
* 所谓MultiMap,就是说一个key不在是简单的指向一个对象,而是一组对象,
* add()和remove()的时候跟普通的Map无异,只是在get()时返回一个Collection,
* 利用MultiMap,我们就可以很方便的往一个key上放数量不定的对象,也就实现了一对多。
*/
@SuppressWarnings(value = { "unchecked" })
public static void demoMultiMap() {
System.out.println(StringUtils.center(" demoMultiMap ", 40, "="));
List<String> list = new ArrayList<String>();
List<String> valuelist = new ArrayList<String>();
list.add("123");
list.add("456");
list.add("789");
MultiMap multiMap = new MultiHashMap();
multiMap.put("Sean", list);
multiMap.put("Sean", "C/C++");
multiMap.put("Sean", "OO");
multiMap.put("Sean", "Java");
multiMap.put("Sean", ".NET");
multiMap.remove("Sean", "C/C++");
System.out.println("Sean's skill set: " + multiMap.get("Sean"));
//下面这部分是废话,可以忽略
Iterator itet = ((Collection) multiMap.get("Sean")).iterator();
while (itet.hasNext()) {
Object obj = itet.next();
if (obj instanceof List) {
valuelist = (List<String>) obj;
for (Object value : valuelist) {
System.out.println("obj1:" + value);
}
} else if (obj instanceof String) {
System.out.println("value:" + obj.toString());
}
}
System.out.println(StringUtils.repeat("=", 40));
}
}
输出结果:
============= demoMultiMap =============
Sean's skill set: [[123, 456, 789], OO, Java, .NET]
obj1:123
obj1:456
obj1:789
value:OO
value:Java
value:.NET
========================================