1 package pcc.chemicraft.util;
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.HashMap;
6 import java.util.Iterator;
8 import java.util.ListIterator;
13 * ListHashは型Kに対応したArrayListに型Eを追加する機能を提供します。<br>
17 * HashMap<K, ArrayList<E>>
20 * 型KはHashMapやTreeMapを使った時とように使用します。<br>
21 * 型EはArrayListの型を指定します。<br>
24 * HashMapの型VがArrayListになっており、ArrayListの型Eがこのクラスの型Eになります。<br>
25 * HashMapでは型Vを値として入れなければいけませんが、ListHashではこのクラスの型EをArrayListに入れることができます。<br>
32 public class ListHash<K, E>
35 * @author Ponkotate version:1.0.0 dev
37 * Create ArrayList in HashMap.
40 protected ArrayList<K> keysList = new ArrayList<K>();
41 protected HashMap<K, ArrayList<E>> elementsHash = new HashMap<K, ArrayList<E>>();
43 public boolean add(K par1Key, E par2Element)
47 return this.elementsHash.get(par1Key).add(par2Element);
50 return this.put(par1Key, par2Element);
54 public boolean addAll(K par1Key, Collection<? extends E> par2Collection)
56 return this.elementsHash.get(par1Key).addAll(par2Collection);
59 public boolean addAll(K par1Key, int par2Index, Collection<? extends E> par3Collection)
61 return this.elementsHash.get(par1Key).addAll(par2Index, par3Collection);
66 this.elementsHash.clear();
69 public boolean containsKey(K par1Key)
71 return this.elementsHash.containsKey(par1Key);
74 public boolean containsValue(K par1Key)
76 return this.elementsHash.containsValue(par1Key);
79 public boolean contains(K par1Key, E par2Element)
81 return this.elementsHash.get(par1Key).contains(par2Element);
84 public boolean containsAll(K par1Key, Collection<?> par2Collection)
86 return this.elementsHash.get(par1Key).containsAll(par2Collection);
89 public Set<java.util.Map.Entry<K, E>> entrySet()
91 return this.entrySet();
94 public K getKeyList(int par1Index)
96 return this.keysList.get(par1Index);
99 public E get(K par1Key, int par2Index)
101 return this.elementsHash.get(par1Key).get(par2Index);
104 public int indexOf(K par1Key, E par2Element)
106 return this.elementsHash.get(par1Key).indexOf(par2Element);
109 public boolean isKeysListEmpty(K par1Key)
111 return this.elementsHash.get(par1Key).isEmpty();
114 public boolean isElementsHashEmpty()
116 return this.elementsHash.isEmpty();
119 public Iterator<E> iterator(K par1Key)
121 return this.elementsHash.get(par1Key).iterator();
124 public int lastIndexOf(K par1Key, E par2Element)
126 return this.elementsHash.get(par1Key).lastIndexOf(par2Element);
129 public ListIterator<E> listIterator(K par1Key)
131 return this.elementsHash.get(par1Key).listIterator();
134 public ListIterator<E> listIterator(K par1Key, int par2Index)
136 return this.elementsHash.get(par1Key).listIterator(par2Index);
139 public Set<K> keySet()
141 return this.elementsHash.keySet();
144 public boolean put(K par1Key, E par2Element)
146 this.keysList.add(par1Key);
148 ArrayList<E> elementList = new ArrayList<E>();
149 this.elementsHash.put(par1Key, elementList);
150 return this.add(par1Key, par2Element);
153 public void putAll(Map<? extends K, ? extends ArrayList<E>> par1Map)
155 this.elementsHash.putAll(par1Map);
158 public ArrayList<E> remove(K par1Key)
160 return this.elementsHash.remove(par1Key);
163 public boolean remove(K par1Key, E par2Element)
165 return this.elementsHash.get(par1Key).remove(par2Element);
168 public E remove(K par1Key, int par2Index)
170 return this.elementsHash.get(par1Key).remove(par2Index);
173 public boolean removeAll(K par1Key, Collection<?> par2Collection)
175 return this.elementsHash.get(par1Key).removeAll(par2Collection);
178 public boolean retainAll(K par1Key, Collection<?> par2Collection)
180 return this.elementsHash.get(par1Key).retainAll(par2Collection);
183 public E set(K par1Key, int par2Index, E par3Element)
185 return this.elementsHash.get(par1Key).set(par2Index, par3Element);
188 public int sizeElementsHash()
190 return this.elementsHash.size();
193 public int sizeKeysList()
195 return this.keysList.size();
198 public int sizeElementsList(K par1Key)
200 return this.elementsHash.get(par1Key).size();
203 public List<E> subList(K par1Key, int par2FromIndex, int par3ToIndex)
205 return this.elementsHash.get(par1Key).subList(par2FromIndex, par3ToIndex);
208 public E[] toArray(K par1Key)
210 return (E[])this.elementsHash.get(par1Key).toArray();
213 public <T> T[] toArray(K par1Key, T[] par2Array)
215 return this.elementsHash.get(par1Key).toArray(par2Array);
218 public Collection<ArrayList<E>> values()
220 return this.elementsHash.values();