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 * @author Ponkotate version:1.0.0 dev
15 * Create ArrayList in HashMap.
17 public class ListHash<K, E> {
19 protected ArrayList<K> keysList = new ArrayList<K>();
20 protected HashMap<K, ArrayList<E>> elementsHash = new HashMap<K, ArrayList<E>>();
22 public boolean add(K par1Key, E par2Element) {
24 return this.elementsHash.get(par1Key).add(par2Element);
25 } catch (Exception e) {
26 return this.put(par1Key, par2Element);
30 public boolean addAll(K par1Key, Collection<? extends E> par2Collection) {
31 return this.elementsHash.get(par1Key).addAll(par2Collection);
34 public boolean addAll(K par1Key, int par2Index, Collection<? extends E> par3Collection) {
35 return this.elementsHash.get(par1Key).addAll(par2Index, par3Collection);
38 public boolean createHash(K par1Key) {
39 if (this.elementsHash.put(par1Key, new ArrayList<E>()) != null) {
42 this.keysList.add(par1Key);
47 this.elementsHash.clear();
50 public boolean containsKey(K par1Key) {
51 return this.elementsHash.containsKey(par1Key);
54 public boolean containsValue(K par1Key) {
55 return this.elementsHash.containsValue(par1Key);
58 public boolean contains(K par1Key, E par2Element) {
59 return this.elementsHash.get(par1Key).contains(par2Element);
62 public boolean containsAll(K par1Key, Collection<?> par2Collection) {
63 return this.elementsHash.get(par1Key).containsAll(par2Collection);
66 public Set<java.util.Map.Entry<K, E>> entrySet() {
67 return this.entrySet();
70 public K getKeyList(int par1Index) {
71 return this.keysList.get(par1Index);
74 public E get(K par1Key, int par2Index) {
75 return this.elementsHash.get(par1Key).get(par2Index);
78 public ArrayList<E> get(K par1Key) {
79 return this.elementsHash.get(par1Key);
82 public int indexOf(K par1Key, E par2Element) {
83 return this.elementsHash.get(par1Key).indexOf(par2Element);
86 public boolean isKeysListEmpty(K par1Key) {
87 return this.elementsHash.get(par1Key).isEmpty();
90 public boolean isElementsHashEmpty() {
91 return this.elementsHash.isEmpty();
94 public Iterator<K> iterator() {
95 return this.keysList.iterator();
98 public Iterator<E> iterator(K par1Key) {
99 return this.elementsHash.get(par1Key).iterator();
102 public int lastIndexOf(K par1Key, E par2Element) {
103 return this.elementsHash.get(par1Key).lastIndexOf(par2Element);
106 public ListIterator<E> listIterator(K par1Key) {
107 return this.elementsHash.get(par1Key).listIterator();
110 public ListIterator<E> listIterator(K par1Key, int par2Index) {
111 return this.elementsHash.get(par1Key).listIterator(par2Index);
114 public Set<K> keySet() {
115 return this.elementsHash.keySet();
118 public boolean put(K par1Key, E par2Element) {
119 this.keysList.add(par1Key);
121 ArrayList<E> elementList = new ArrayList<E>();
122 this.elementsHash.put(par1Key, elementList);
123 return this.add(par1Key, par2Element);
126 public void putAll(Map<? extends K, ? extends ArrayList<E>> par1Map) {
127 this.elementsHash.putAll(par1Map);
130 public ArrayList<E> remove(K par1Key) {
131 return this.elementsHash.remove(par1Key);
134 public boolean remove(K par1Key, E par2Element) {
135 return this.elementsHash.get(par1Key).remove(par2Element);
138 public E remove(K par1Key, int par2Index) {
139 return this.elementsHash.get(par1Key).remove(par2Index);
142 public boolean removeAll(K par1Key, Collection<?> par2Collection) {
143 return this.elementsHash.get(par1Key).removeAll(par2Collection);
146 public boolean retainAll(K par1Key, Collection<?> par2Collection) {
147 return this.elementsHash.get(par1Key).retainAll(par2Collection);
150 public E set(K par1Key, int par2Index, E par3Element) {
151 return this.elementsHash.get(par1Key).set(par2Index, par3Element);
154 public int sizeElementsHash() {
155 return this.elementsHash.size();
158 public int sizeKeysList() {
159 return this.keysList.size();
162 public int sizeElementsList(K par1Key) {
163 return this.elementsHash.get(par1Key).size();
166 public List<E> subList(K par1Key, int par2FromIndex, int par3ToIndex) {
167 return this.elementsHash.get(par1Key).subList(
172 public E[] toArray(K par1Key) {
173 return (E[])this.elementsHash.get(par1Key).toArray();
176 public <T> T[] toArray(K par1Key, T[] par2Array) {
177 return this.elementsHash.get(par1Key).toArray(par2Array);
180 public Collection<ArrayList<E>> values() {
181 return this.elementsHash.values();