@Override public Set<java.util.Map.Entry<Character, V>> entrySet() { final Set<java.util.Map.Entry<Character, V>> entries = new HashSet<java.util.Map.Entry<Character, V>> (); for (int i = 0; i < table.length; ++i) { Entry<V> entry = table[i]; while (entry != null) { entries.add(entry); entry = entry.getNext(); } } return entries; }
@Override public Set<Character> keySet() { final Set<Character> keys = new HashSet<Character>(); for (int i = 0; i < table.length; ++i) { Entry<V> entry = table[i]; while (entry != null) { keys.add(entry.getKey()); entry = entry.getNext(); } } return keys; }
@Override public Collection<V> values() { final Set<V> values = new HashSet<V>(); for (int i = 0; i < table.length; ++i) { Entry<V> entry = table[i]; while (entry != null) { values.add(entry.getValue()); entry = entry.getNext(); } } return values; }
public void put(final Entry<V>[] table, final char key, final V value) { final Entry<V> newEntry = new Entry<V>(key, value); Entry<V> entry = table[key % table.length]; if (entry == null) { table[key % table.length] = newEntry; } else { while (entry.getNext() != null) { if (entry.getKeyChar() == key) { throw new IllegalStateException("Key '" + key + "' already used"); } entry = entry.getNext(); } entry.setNext(newEntry); } }
private void expand() { final int newSize = 2 * table.length; @SuppressWarnings("unchecked") final Entry<V>[] newTable = new Entry[newSize]; for (Entry<V> entry : table) { Entry<V> temp = entry; while (temp != null) { put(newTable, temp.getKeyChar(), temp.getValue()); temp = temp.getNext(); } } table = newTable; }
public V get(final char key) { Entry<V> entry = table[key % table.length]; while (entry != null) { if (entry.getKeyChar() == key) { return entry.getValue(); } entry = entry.getNext(); } return null; }