java.util
Class HashMap
java.lang.Object
|
+--java.util.AbstractMap
|
+--java.util.HashMap
- All Implemented Interfaces:
- Cloneable, Map, Serializable
- Direct Known Subclasses:
- LinkedHashMap
- public class HashMap
- extends AbstractMap
- implements Map, Cloneable, Serializable
Untamed:
- See Also:
- Serialized Form
Field Summary
(package private) static float
DEFAULT_LOAD_FACTOR
The load fast used when none specified in constructor.
(package private) float
loadFactor
The load factor for the hash table.
(package private) static int
MAXIMUM_CAPACITY
The maximum capacity, used if a higher value is implicitly specified
by either of the constructors with arguments.
(package private) int
modCount
The number of times this HashMap has been structurally modified
Structural modifications are those that change the number of mappings in
the HashMap or otherwise modify its internal structure (e.g.,
rehash).
(package private) static Object
NULL_KEY
Value representing null keys inside tables.
(package private) int
size
The number of key-value mappings contained in this identity hash map.
(package private) java.util.HashMap.Entry[]
table
The table, resized as necessary.
(package private) int
threshold
The next size value at which to resize (capacity * load factor).
Constructor Summary
HashMap()
Enabled: Constructs an empty
HashMap with the default initial capacity
(16) and the default load factor (0.75).
HashMap(int initialCapacity)
Enabled: Constructs an empty
HashMap with the specified initial
capacity and the default load factor (0.75).
HashMap(int initialCapacity,
float loadFactor)
Enabled: Constructs an empty
HashMap with the specified initial
capacity and load factor.
HashMap(Map m)
Enabled: Constructs a new
HashMap with the same mappings as the
specified
Map.
Method Summary
(package private) void
addEntry(int hash,
Object key,
Object value,
int bucketIndex)
Add a new entry with the specified key, value and hash code to
the specified bucket.
void
clear()
Enabled: Removes all mappings from this map.
Object
clone()
Suppressed: Returns a shallow copy of this
HashMap instance: the keys and
values themselves are not cloned.
boolean
containsKey(Object key)
Enabled: Returns
true if this map contains a mapping for the
specified key.
private boolean
containsNullValue()
Special-case code for containsValue with null argument
boolean
containsValue(Object value)
Enabled: Returns
true if this map maps one or more keys to the
specified value.
(package private) void
createEntry(int hash,
Object key,
Object value,
int bucketIndex)
Like addEntry except that this version is used when creating entries
as part of Map construction or "pseudo-construction" (cloning,
deserialization).
Set
entrySet()
Enabled: Returns a collection view of the mappings contained in this map.
(package private) static boolean
eq(Object x,
Object y)
Check for equality of non-null reference x and possibly-null y.
Object
get(Object key)
Enabled: Returns the value to which the specified key is mapped in this identity
hash map, or
null if the map contains no mapping for this key.
(package private) java.util.HashMap.Entry
getEntry(Object key)
Returns the entry associated with the specified key in the
HashMap.
(package private) static int
hash(Object x)
Returns a hash value for the specified object.
(package private) static int
indexFor(int h,
int length)
Returns index for hash code h.
(package private) void
init()
Initialization hook for subclasses.
boolean
isEmpty()
Enabled: Returns
true if this map contains no key-value mappings.
Set
keySet()
Enabled: Returns a set view of the keys contained in this map.
Object
put(Object key,
Object value)
Enabled: Associates the specified value with the specified key in this map.
void
putAll(Map t)
Enabled: Copies all of the mappings from the specified map to this map
These mappings will replace any mappings that
this map had for any of the keys currently in the specified map.
private void
putForCreate(Object key,
Object value)
This method is used instead of put by constructors and
pseudoconstructors (clone, readObject).
Object
remove(Object key)
Enabled: Removes the mapping for this key from this map if present.
(package private) java.util.HashMap.Entry
removeEntryForKey(Object key)
Removes and returns the entry associated with the specified key
in the HashMap.
(package private) java.util.HashMap.Entry
removeMapping(Object o)
Special version of remove for EntrySet.
(package private) void
resize(int newCapacity)
Rehashes the contents of this map into a new
HashMap instance
with a larger capacity.
int
size()
Enabled: Returns the number of key-value mappings in this map.
(package private) void
transfer(java.util.HashMap.Entry[] newTable)
Transfer all entries from current table to newTable.
(package private) static Object
unmaskNull(Object key)
Returns key represented by specified internal representation.
Collection
values()
Enabled: Returns a collection view of the values contained in this map.
Methods inherited from class java.lang.Object
Methods inherited from interface java.util.Map
Field Detail
DEFAULT_INITIAL_CAPACITY
static final int DEFAULT_INITIAL_CAPACITY
- The default initial capacity - MUST be a power of two.
MAXIMUM_CAPACITY
static final int MAXIMUM_CAPACITY
- The maximum capacity, used if a higher value is implicitly specified
by either of the constructors with arguments.
MUST be a power of two <= 1<<30.
DEFAULT_LOAD_FACTOR
static final float DEFAULT_LOAD_FACTOR
- The load fast used when none specified in constructor.
table
transient java.util.HashMap.Entry[] table
- The table, resized as necessary. Length MUST Always be a power of two.
size
transient int size
- The number of key-value mappings contained in this identity hash map.
threshold
int threshold
- The next size value at which to resize (capacity * load factor).
loadFactor
final float loadFactor
- The load factor for the hash table.
modCount
transient volatile int modCount
- The number of times this HashMap has been structurally modified
Structural modifications are those that change the number of mappings in
the HashMap or otherwise modify its internal structure (e.g.,
rehash). This field is used to make iterators on Collection-views of
the HashMap fail-fast. (See ConcurrentModificationException).
NULL_KEY
static final Object NULL_KEY
- Value representing null keys inside tables.
entrySet
private transient Set entrySet
serialVersionUID
private static final long serialVersionUID
Constructor Detail
HashMap
public HashMap(int initialCapacity,
float loadFactor)
- Enabled: Constructs an empty HashMap with the specified initial
capacity and load factor.
- Parameters:
initialCapacity
- The initial capacity.loadFactor
- The load factor.
- Throws:
IllegalArgumentException
- if the initial capacity is negative
or the load factor is nonpositive.
HashMap
public HashMap(int initialCapacity)
- Enabled: Constructs an empty HashMap with the specified initial
capacity and the default load factor (0.75).
- Parameters:
initialCapacity
- the initial capacity.
- Throws:
IllegalArgumentException
- if the initial capacity is negative.
HashMap
public HashMap()
- Enabled: Constructs an empty HashMap with the default initial capacity
(16) and the default load factor (0.75).
HashMap
public HashMap(Map m)
- Enabled: Constructs a new HashMap with the same mappings as the
specified Map. The HashMap is created with
default load factor (0.75) and an initial capacity sufficient to
hold the mappings in the specified Map.
- Parameters:
m
- the map whose mappings are to be placed in this map.
- Throws:
NullPointerException
- if the specified map is null.
Method Detail
init
void init()
- Initialization hook for subclasses. This method is called
in all constructors and pseudo-constructors (clone, readObject)
after HashMap has been initialized but before any entries have
been inserted. (In the absence of this method, readObject would
require explicit knowledge of subclasses.)
-
-
maskNull
static Object maskNull(Object key)
- Returns internal representation for key. Use NULL_KEY if key is null.
-
-
unmaskNull
static Object unmaskNull(Object key)
- Returns key represented by specified internal representation.
-
-
hash
static int hash(Object x)
- Returns a hash value for the specified object. In addition to
the object's own hashCode, this method applies a "supplemental
hash function," which defends against poor quality hash functions.
This is critical because HashMap uses power-of two length
hash tables.
The shift distances in this function were chosen as the result
of an automated search over the entire four-dimensional search space.
-
-
eq
static boolean eq(Object x,
Object y)
- Check for equality of non-null reference x and possibly-null y.
-
-
indexFor
static int indexFor(int h,
int length)
- Returns index for hash code h.
-
-
size
public int size()
- Enabled: Returns the number of key-value mappings in this map.
- Specified by:
size
in interface Map
- Overrides:
size
in class AbstractMap
- Returns:
- the number of key-value mappings in this map.
isEmpty
public boolean isEmpty()
- Enabled: Returns true if this map contains no key-value mappings.
- Specified by:
isEmpty
in interface Map
- Overrides:
isEmpty
in class AbstractMap
- Returns:
- true if this map contains no key-value mappings.
get
public Object get(Object key)
- Enabled: Returns the value to which the specified key is mapped in this identity
hash map, or null if the map contains no mapping for this key.
A return value of null does not necessarily indicate
that the map contains no mapping for the key; it is also possible that
the map explicitly maps the key to null. The
containsKey method may be used to distinguish these two cases.
- Specified by:
get
in interface Map
- Overrides:
get
in class AbstractMap
- Parameters:
key
- the key whose associated value is to be returned.
- Returns:
- the value to which this map maps the specified key, or
null if the map contains no mapping for this key.
- See Also:
put(Object, Object)
containsKey
public boolean containsKey(Object key)
- Enabled: Returns true if this map contains a mapping for the
specified key.
- Specified by:
containsKey
in interface Map
- Overrides:
containsKey
in class AbstractMap
- Parameters:
key
- The key whose presence in this map is to be tested
- Returns:
- true if this map contains a mapping for the specified
key.
getEntry
java.util.HashMap.Entry getEntry(Object key)
- Returns the entry associated with the specified key in the
HashMap. Returns null if the HashMap contains no mapping
for this key.
-
-
put
public Object put(Object key,
Object value)
- Enabled: Associates the specified value with the specified key in this map.
If the map previously contained a mapping for this key, the old
value is replaced.
- Specified by:
put
in interface Map
- Overrides:
put
in class AbstractMap
- Parameters:
key
- key with which the specified value is to be associated.value
- value to be associated with the specified key.
- Returns:
- previous value associated with specified key, or null
if there was no mapping for key. A null return can
also indicate that the HashMap previously associated
null with the specified key.
putForCreate
private void putForCreate(Object key,
Object value)
- This method is used instead of put by constructors and
pseudoconstructors (clone, readObject). It does not resize the table,
check for comodification, etc. It calls createEntry rather than
addEntry.
-
-
putAllForCreate
void putAllForCreate(Map m)
-
-
resize
void resize(int newCapacity)
- Rehashes the contents of this map into a new HashMap instance
with a larger capacity. This method is called automatically when the
number of keys in this map exceeds its capacity and load factor.
-
- Parameters:
newCapacity
- the new capacity, MUST be a power of two.
transfer
void transfer(java.util.HashMap.Entry[] newTable)
- Transfer all entries from current table to newTable.
-
-
putAll
public void putAll(Map t)
- Enabled: Copies all of the mappings from the specified map to this map
These mappings will replace any mappings that
this map had for any of the keys currently in the specified map.
- Specified by:
putAll
in interface Map
- Overrides:
putAll
in class AbstractMap
- Parameters:
t
- mappings to be stored in this map.
- Throws:
NullPointerException
- if the specified map is null.
remove
public Object remove(Object key)
- Enabled: Removes the mapping for this key from this map if present.
- Specified by:
remove
in interface Map
- Overrides:
remove
in class AbstractMap
- Parameters:
key
- key whose mapping is to be removed from the map.
- Returns:
- previous value associated with specified key, or null
if there was no mapping for key. A null return can
also indicate that the map previously associated null
with the specified key.
removeEntryForKey
java.util.HashMap.Entry removeEntryForKey(Object key)
- Removes and returns the entry associated with the specified key
in the HashMap. Returns null if the HashMap contains no mapping
for this key.
-
-
removeMapping
java.util.HashMap.Entry removeMapping(Object o)
- Special version of remove for EntrySet.
-
-
clear
public void clear()
- Enabled: Removes all mappings from this map.
- Specified by:
clear
in interface Map
- Overrides:
clear
in class AbstractMap
-
containsValue
public boolean containsValue(Object value)
- Enabled: Returns true if this map maps one or more keys to the
specified value.
- Specified by:
containsValue
in interface Map
- Overrides:
containsValue
in class AbstractMap
- Parameters:
value
- value whose presence in this map is to be tested.
- Returns:
- true if this map maps one or more keys to the
specified value.
containsNullValue
private boolean containsNullValue()
- Special-case code for containsValue with null argument
-
-
clone
public Object clone()
- Suppressed: Returns a shallow copy of this HashMap instance: the keys and
values themselves are not cloned.
- Overrides:
clone
in class AbstractMap
- Returns:
- a shallow copy of this map.
addEntry
void addEntry(int hash,
Object key,
Object value,
int bucketIndex)
- Add a new entry with the specified key, value and hash code to
the specified bucket. It is the responsibility of this
method to resize the table if appropriate.
Subclass overrides this to alter the behavior of put method.
-
-
createEntry
void createEntry(int hash,
Object key,
Object value,
int bucketIndex)
- Like addEntry except that this version is used when creating entries
as part of Map construction or "pseudo-construction" (cloning,
deserialization). This version needn't worry about resizing the table.
Subclass overrides this to alter the behavior of HashMap(Map),
clone, and readObject.
-
-
newKeyIterator
Iterator newKeyIterator()
-
-
newValueIterator
Iterator newValueIterator()
-
-
newEntryIterator
Iterator newEntryIterator()
-
-
keySet
public Set keySet()
- Enabled: Returns a set view of the keys contained in this map. The set is
backed by the map, so changes to the map are reflected in the set, and
vice-versa. The set supports element removal, which removes the
corresponding mapping from this map, via the Iterator.remove,
Set.remove, removeAll, retainAll, and
clear operations. It does not support the add or
addAll operations.
- Specified by:
keySet
in interface Map
- Overrides:
keySet
in class AbstractMap
- Returns:
- a set view of the keys contained in this map.
values
public Collection values()
- Enabled: Returns a collection view of the values contained in this map. The
collection is backed by the map, so changes to the map are reflected in
the collection, and vice-versa. The collection supports element
removal, which removes the corresponding mapping from this map, via the
Iterator.remove, Collection.remove,
removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
- Specified by:
values
in interface Map
- Overrides:
values
in class AbstractMap
- Returns:
- a collection view of the values contained in this map.
entrySet
public Set entrySet()
- Enabled: Returns a collection view of the mappings contained in this map. Each
element in the returned collection is a Map.Entry. The
collection is backed by the map, so changes to the map are reflected in
the collection, and vice-versa. The collection supports element
removal, which removes the corresponding mapping from the map, via the
Iterator.remove, Collection.remove,
removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
- Specified by:
entrySet
in interface Map
- Specified by:
entrySet
in class AbstractMap
- Returns:
- a collection view of the mappings contained in this map.
- See Also:
Map.Entry
writeObject
private void writeObject(ObjectOutputStream s)
throws IOException
- Save the state of the HashMap instance to a stream (i.e.,
serialize it).
-
IOException
readObject
private void readObject(ObjectInputStream s)
throws IOException,
ClassNotFoundException
- Reconstitute the HashMap instance from a stream (i.e.,
deserialize it).
-
IOException
ClassNotFoundException
capacity
int capacity()
-
-
loadFactor
float loadFactor()
-
-