blob: 80727a9e33c413374610f8444e0c4e0849a7ac3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
package com.koushikdutta.async.util;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Set;
/**
* Created by koush on 5/27/13.
*/
public class HashList<T> {
Hashtable<String, TaggedList<T>> internal = new Hashtable<String, TaggedList<T>>();
public HashList() {
}
public Set<String> keySet() {
return internal.keySet();
}
public synchronized <V> V tag(String key) {
TaggedList<T> list = internal.get(key);
if (list == null)
return null;
return list.tag();
}
public synchronized <V> void tag(String key, V tag) {
TaggedList<T> list = internal.get(key);
if (list == null) {
list = new TaggedList<T>();
internal.put(key, list);
}
list.tag(tag);
}
public synchronized ArrayList<T> remove(String key) {
return internal.remove(key);
}
public synchronized int size() {
return internal.size();
}
public synchronized ArrayList<T> get(String key) {
return internal.get(key);
}
synchronized public boolean contains(String key) {
ArrayList<T> check = get(key);
return check != null && check.size() > 0;
}
synchronized public void add(String key, T value) {
ArrayList<T> ret = get(key);
if (ret == null) {
TaggedList<T> put = new TaggedList<T>();
ret = put;
internal.put(key, put);
}
ret.add(value);
}
synchronized public T pop(String key) {
TaggedList<T> values = internal.get(key);
if (values == null)
return null;
if (values.size() == 0)
return null;
return values.remove(values.size() - 1);
}
synchronized public boolean removeItem(String key, T value) {
TaggedList<T> values = internal.get(key);
if (values == null)
return false;
values.remove(value);
return values.size() == 0;
}
}
|