OSDN Git Service

tc
[chemicraft/chemicraft.git] / common / pcc / chemicraft / util / ListHash.java
1 package pcc.chemicraft.util;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.HashMap;
6 import java.util.Iterator;
7 import java.util.List;
8 import java.util.ListIterator;
9 import java.util.Map;
10 import java.util.Set;
11
12 /**
13  * ListHashは型Kに対応したArrayListに型Eを追加する機能を提供します。<br>
14  *
15  * このクラスを作成すると、まず<br>
16  * <pre>
17  * HashMap&lt;K, ArrayList&lt;E&gt;&gt;
18  * </pre>
19  * が生成されます。<br>
20  * 型KはHashMapやTreeMapを使った時とように使用します。<br>
21  * 型EはArrayListの型を指定します。<br>
22  * <br>
23  * <h2>構造解説:</h2>
24  * HashMapの型VがArrayListになっており、ArrayListの型Eがこのクラスの型Eになります。<br>
25  * HashMapでは型Vを値として入れなければいけませんが、ListHashではこのクラスの型EをArrayListに入れることができます。<br>
26  *
27  * @author mozipi
28  *
29  * @param <K> Key
30  * @param <E> Element
31  */
32 public class ListHash<K, E>
33 {
34    /**
35     * @author Ponkotate version:1.0.0 dev
36     *
37     *         Create ArrayList in HashMap.
38     */
39
40    protected ArrayList<K> keysList = new ArrayList<K>();
41    protected HashMap<K, ArrayList<E>> elementsHash = new HashMap<K, ArrayList<E>>();
42
43    public boolean add(K par1Key, E par2Element)
44    {
45       try
46       {
47          return this.elementsHash.get(par1Key).add(par2Element);
48       } catch (Exception e)
49       {
50          return this.put(par1Key, par2Element);
51       }
52    }
53
54    public boolean addAll(K par1Key, Collection<? extends E> par2Collection)
55    {
56       return this.elementsHash.get(par1Key).addAll(par2Collection);
57    }
58
59    public boolean addAll(K par1Key, int par2Index, Collection<? extends E> par3Collection)
60    {
61       return this.elementsHash.get(par1Key).addAll(par2Index, par3Collection);
62    }
63
64    public void clear()
65    {
66       this.elementsHash.clear();
67    }
68
69    public boolean containsKey(K par1Key)
70    {
71       return this.elementsHash.containsKey(par1Key);
72    }
73
74    public boolean containsValue(K par1Key)
75    {
76       return this.elementsHash.containsValue(par1Key);
77    }
78
79    public boolean contains(K par1Key, E par2Element)
80    {
81       return this.elementsHash.get(par1Key).contains(par2Element);
82    }
83
84    public boolean containsAll(K par1Key, Collection<?> par2Collection)
85    {
86       return this.elementsHash.get(par1Key).containsAll(par2Collection);
87    }
88
89    public Set<java.util.Map.Entry<K, E>> entrySet()
90    {
91       return this.entrySet();
92    }
93
94    public K getKeyList(int par1Index)
95    {
96       return this.keysList.get(par1Index);
97    }
98
99    public E get(K par1Key, int par2Index)
100    {
101       return this.elementsHash.get(par1Key).get(par2Index);
102    }
103
104    public int indexOf(K par1Key, E par2Element)
105    {
106       return this.elementsHash.get(par1Key).indexOf(par2Element);
107    }
108
109    public boolean isKeysListEmpty(K par1Key)
110    {
111       return this.elementsHash.get(par1Key).isEmpty();
112    }
113
114    public boolean isElementsHashEmpty()
115    {
116       return this.elementsHash.isEmpty();
117    }
118
119    public Iterator<E> iterator(K par1Key)
120    {
121       return this.elementsHash.get(par1Key).iterator();
122    }
123
124    public int lastIndexOf(K par1Key, E par2Element)
125    {
126       return this.elementsHash.get(par1Key).lastIndexOf(par2Element);
127    }
128
129    public ListIterator<E> listIterator(K par1Key)
130    {
131       return this.elementsHash.get(par1Key).listIterator();
132    }
133
134    public ListIterator<E> listIterator(K par1Key, int par2Index)
135    {
136       return this.elementsHash.get(par1Key).listIterator(par2Index);
137    }
138
139    public Set<K> keySet()
140    {
141       return this.elementsHash.keySet();
142    }
143
144    public boolean put(K par1Key, E par2Element)
145    {
146       this.keysList.add(par1Key);
147
148       ArrayList<E> elementList = new ArrayList<E>();
149       this.elementsHash.put(par1Key, elementList);
150       return this.add(par1Key, par2Element);
151    }
152
153    public void putAll(Map<? extends K, ? extends ArrayList<E>> par1Map)
154    {
155       this.elementsHash.putAll(par1Map);
156    }
157
158    public ArrayList<E> remove(K par1Key)
159    {
160       return this.elementsHash.remove(par1Key);
161    }
162
163    public boolean remove(K par1Key, E par2Element)
164    {
165       return this.elementsHash.get(par1Key).remove(par2Element);
166    }
167
168    public E remove(K par1Key, int par2Index)
169    {
170       return this.elementsHash.get(par1Key).remove(par2Index);
171    }
172
173    public boolean removeAll(K par1Key, Collection<?> par2Collection)
174    {
175       return this.elementsHash.get(par1Key).removeAll(par2Collection);
176    }
177
178    public boolean retainAll(K par1Key, Collection<?> par2Collection)
179    {
180       return this.elementsHash.get(par1Key).retainAll(par2Collection);
181    }
182
183    public E set(K par1Key, int par2Index, E par3Element)
184    {
185       return this.elementsHash.get(par1Key).set(par2Index, par3Element);
186    }
187
188    public int sizeElementsHash()
189    {
190       return this.elementsHash.size();
191    }
192
193    public int sizeKeysList()
194    {
195       return this.keysList.size();
196    }
197
198    public int sizeElementsList(K par1Key)
199    {
200       return this.elementsHash.get(par1Key).size();
201    }
202
203    public List<E> subList(K par1Key, int par2FromIndex, int par3ToIndex)
204    {
205       return this.elementsHash.get(par1Key).subList(par2FromIndex, par3ToIndex);
206    }
207
208    public E[] toArray(K par1Key)
209    {
210       return (E[])this.elementsHash.get(par1Key).toArray();
211    }
212
213    public <T> T[] toArray(K par1Key, T[] par2Array)
214    {
215       return this.elementsHash.get(par1Key).toArray(par2Array);
216    }
217
218    public Collection<ArrayList<E>> values()
219    {
220       return this.elementsHash.values();
221    }
222
223 }