/** Used to determine the number of array slots required by each
* mapping entry. */
- protected final int indexmultiple = 1;
+ protected final int indexmultiple;
/** Number of entries with non-null key (includes placeholder slots). */
protected int usedslots = 0;
*/
protected Object[] entries = null;
- public Hash(int initialCapacity, float loadFactor) {
+ public Hash(int indexmultiple, int initialCapacity, float loadFactor) {
// using a pseudoprime in the form 4x+3 ensures full coverage
initialCapacity = initialCapacity / 4;
initialCapacity = 4 * initialCapacity + 3;
- entries = new Object[initialCapacity * indexmultiple];
this.numslots = initialCapacity;
this.loadFactor = loadFactor;
+ this.indexmultiple = indexmultiple;
+
+ entries = new Object[initialCapacity * indexmultiple];
}
public int size() { return size; }
public class HashMap extends Hash implements Map {
private static final long serialVersionUID = 2348905755L;
- protected final int indexmultiple = 2;
-
public HashMap() { this(16, 0.75F); }
- public HashMap(int cap, float load) { super(cap, load); }
+ public HashMap(int cap, float load) { super(2, cap, load); }
public Object get(Object key) { int i = indexOf(key); return i >= 0 ? entries[i + 1] : null; }
public Object put(Object key, Object value) {