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