View Javadoc

1   /**
2    * 
3    */
4   package org.ximtec.igesture.util;
5   
6   import java.util.ArrayList;
7   import java.util.LinkedHashMap;
8   import java.util.List;
9   import java.util.Map;
10  import java.util.Set;
11  
12  /**
13   * @author Bjorn Puype, bpuype@gmail.com
14   *
15   */
16  public class MultiValueMap<T,S> {
17  
18  	private Map<T,List<S>> map;
19  	
20  	public MultiValueMap()
21  	{
22  		map = new LinkedHashMap<T,List<S>>();
23  	}
24  	
25  	public void add(T key, S value)
26  	{
27  		if(map.containsKey(key))
28  		{
29  			List<S> list = map.get(key);
30  			list.add(value);
31  		}
32  		else
33  		{
34  			List<S> list = new ArrayList<S>();
35  			list.add(value);
36  			map.put(key, list);
37  		}
38  	}
39  	
40  	public void removeKey(T key)
41  	{
42  		map.remove(key);
43  	}
44  	
45  	public void removeValue(T key, S value)
46  	{
47  		if(map.containsKey(key))
48  		{
49  			List<S> list = map.get(key);
50  			list.remove(value);
51  		}
52  	}
53  	
54  	public Set<T> keySet()
55  	{
56  		return map.keySet();
57  	}
58  	
59  	public List<S> getValues(T key)
60  	{
61  		return map.get(key);
62  	}
63  	
64  	public void clear()
65  	{
66  		map.clear();
67  	}
68  	
69  	public boolean isEmpty()
70  	{
71  		return map.isEmpty();
72  	}
73  	
74  	public boolean containsKey(T key)
75  	{
76  		return map.containsKey(key);
77  	}
78  	
79  	public int size()
80  	{
81  		return map.size();
82  	}
83  }