天天看點

Apache元件commons的MultiHashMap的一對多集合用法

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
========================================
           

繼續閱讀