HashSet
Stay organized with collections
Save and categorize content based on your preferences.
Known Direct Subclasses
LinkedHashSet<E> |
Hash table and linked list implementation of the Set interface,
with predictable iteration order. |
|
This class implements the Set interface, backed by a hash table
(actually a HashMap instance). It makes no guarantees as to the
iteration order of the set; in particular, it does not guarantee that the
order will remain constant over time. This class permits the null
element.
This class offers constant time performance for the basic operations
(add, remove, contains and size),
assuming the hash function disperses the elements properly among the
buckets. Iterating over this set requires time proportional to the sum of
the HashSet instance's size (the number of elements) plus the
"capacity" of the backing HashMap instance (the number of
buckets). Thus, it's very important not to set the initial capacity too
high (or the load factor too low) if iteration performance is important.
Note that this implementation is not synchronized.
If multiple threads access a hash set concurrently, and at least one of
the threads modifies the set, it must be synchronized externally.
This is typically accomplished by synchronizing on some object that
naturally encapsulates the set.
If no such object exists, the set should be "wrapped" using the
Collections.synchronizedSet
method. This is best done at creation time, to prevent accidental
unsynchronized access to the set:
Set s = Collections.synchronizedSet(new HashSet(...));
The iterators returned by this class's iterator method are
fail-fast: if the set is modified at any time after the iterator is
created, in any way except through the iterator's own remove
method, the Iterator throws a ConcurrentModificationException
.
Thus, in the face of concurrent modification, the iterator fails quickly
and cleanly, rather than risking arbitrary, non-deterministic behavior at
an undetermined time in the future.
Note that the fail-fast behavior of an iterator cannot be guaranteed
as it is, generally speaking, impossible to make any hard guarantees in the
presence of unsynchronized concurrent modification. Fail-fast iterators
throw ConcurrentModificationException on a best-effort basis.
Therefore, it would be wrong to write a program that depended on this
exception for its correctness: the fail-fast behavior of iterators
should be used only to detect bugs.
This class is a member of the
Java Collections Framework.
Public Constructor Summary
|
HashSet()
Constructs a new, empty set; the backing HashMap instance has
default initial capacity (16) and load factor (0.75).
|
|
HashSet( Collection<? extends E> c)
Constructs a new set containing the elements in the specified
collection.
|
|
HashSet(int initialCapacity, float loadFactor)
Constructs a new, empty set; the backing HashMap instance has
the specified initial capacity and the specified load factor.
|
|
HashSet(int initialCapacity)
Constructs a new, empty set; the backing HashMap instance has
the specified initial capacity and default load factor (0.75).
|
Public Method Summary
boolean
|
add(E e)
Adds the specified element to this set if it is not already present.
|
void
|
clear()
Removes all of the elements from this set.
|
Object
|
clone()
Returns a shallow copy of this HashSet instance: the elements
themselves are not cloned.
|
boolean
|
contains( Object o)
Returns true if this set contains the specified element.
|
boolean
|
isEmpty()
Returns true if this set contains no elements.
|
Iterator<E>
|
iterator()
Returns an iterator over the elements in this set.
|
boolean
|
remove( Object o)
Removes the specified element from this set if it is present.
|
int
|
size()
Returns the number of elements in this set (its cardinality).
|
Spliterator<E>
|
|
Inherited Method Summary
From class
java.util.AbstractSet
boolean
|
equals( Object o)
Compares the specified object with this set for equality.
|
int
|
hashCode()
Returns the hash code value for this set.
|
boolean
|
removeAll( Collection<?> c)
Removes from this set all of its elements that are contained in the
specified collection (optional operation).
|
From class
java.util.AbstractCollection
boolean
|
add(E e)
Ensures that this collection contains the specified element (optional
operation).
This implementation always throws an
UnsupportedOperationException.
|
boolean
|
addAll( Collection<? extends E> c)
Adds all of the elements in the specified collection to this collection
(optional operation).
This implementation iterates over the specified collection, and adds
each object returned by the iterator to this collection, in turn.
|
void
|
clear()
Removes all of the elements from this collection (optional operation).
This implementation iterates over this collection, removing each
element using the Iterator.remove operation.
|
boolean
|
contains( Object o)
Returns true if this collection contains the specified element.
This implementation iterates over the elements in the collection,
checking each element in turn for equality with the specified element.
|
boolean
|
containsAll( Collection<?> c)
Returns true if this collection contains all of the elements
in the specified collection.
This implementation iterates over the specified collection,
checking each element returned by the iterator in turn to see
if it's contained in this collection.
|
boolean
|
isEmpty()
Returns true if this collection contains no elements.
This implementation returns size() == 0.
|
abstract
Iterator<E>
|
iterator()
Returns an iterator over the elements contained in this collection.
|
boolean
|
remove( Object o)
Removes a single instance of the specified element from this
collection, if it is present (optional operation).
This implementation iterates over the collection looking for the
specified element.
|
boolean
|
removeAll( Collection<?> c)
Removes all of this collection's elements that are also contained in the
specified collection (optional operation).
This implementation iterates over this collection, checking each
element returned by the iterator in turn to see if it's contained
in the specified collection.
|
boolean
|
retainAll( Collection<?> c)
Retains only the elements in this collection that are contained in the
specified collection (optional operation).
This implementation iterates over this collection, checking each
element returned by the iterator in turn to see if it's contained
in the specified collection.
|
abstract
int
|
size()
Returns the number of elements in this collection.
|
<T>
T[]
|
toArray(T[] contents)
Returns an array containing all of the elements in this collection;
the runtime type of the returned array is that of the specified array.
This implementation returns an array containing all the elements
returned by this collection's iterator in the same order, stored in
consecutive elements of the array, starting with index 0 .
|
Object[]
|
toArray()
Returns an array containing all of the elements in this collection.
This implementation returns an array containing all the elements
returned by this collection's iterator, in the same order, stored in
consecutive elements of the array, starting with index 0 .
|
String
|
toString()
Returns a string representation of this collection.
|
From class
java.lang.Object
Object
|
clone()
Creates and returns a copy of this Object .
|
boolean
|
equals( Object obj)
Compares this instance with the specified object and indicates if they
are equal.
|
void
|
finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
|
final
Class<?>
|
getClass()
Returns the unique instance of Class that represents this
object's class.
|
int
|
hashCode()
Returns an integer hash code for this object.
|
final
void
|
notify()
Causes a thread which is waiting on this object's monitor (by means of
calling one of the wait() methods) to be woken up.
|
final
void
|
notifyAll()
Causes all threads which are waiting on this object's monitor (by means
of calling one of the wait() methods) to be woken up.
|
String
|
toString()
Returns a string containing a concise, human-readable description of this
object.
|
final
void
|
wait(long timeout, int nanos)
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object or until the
specified timeout expires.
|
final
void
|
wait(long timeout)
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object or until the
specified timeout expires.
|
final
void
|
wait()
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object.
|
From interface
java.util.Set
abstract
boolean
|
add(E e)
Adds the specified element to this set if it is not already present
(optional operation).
|
abstract
boolean
|
addAll( Collection<? extends E> c)
Adds all of the elements in the specified collection to this set if
they're not already present (optional operation).
|
abstract
void
|
clear()
Removes all of the elements from this set (optional operation).
|
abstract
boolean
|
contains( Object o)
Returns true if this set contains the specified element.
|
abstract
boolean
|
containsAll( Collection<?> c)
Returns true if this set contains all of the elements of the
specified collection.
|
abstract
boolean
|
equals( Object o)
Compares the specified object with this set for equality.
|
abstract
int
|
hashCode()
Returns the hash code value for this set.
|
abstract
boolean
|
isEmpty()
Returns true if this set contains no elements.
|
abstract
Iterator<E>
|
iterator()
Returns an iterator over the elements in this set.
|
abstract
boolean
|
remove( Object o)
Removes the specified element from this set if it is present
(optional operation).
|
abstract
boolean
|
removeAll( Collection<?> c)
Removes from this set all of its elements that are contained in the
specified collection (optional operation).
|
abstract
boolean
|
retainAll( Collection<?> c)
Retains only the elements in this set that are contained in the
specified collection (optional operation).
|
abstract
int
|
size()
Returns the number of elements in this set (its cardinality).
|
Spliterator<E>
|
spliterator()
Creates a Spliterator over the elements in this set.
|
abstract
<T>
T[]
|
toArray(T[] a)
Returns an array containing all of the elements in this set; the
runtime type of the returned array is that of the specified array.
|
abstract
Object[]
|
toArray()
Returns an array containing all of the elements in this set.
|
From interface
java.util.Collection
abstract
boolean
|
add(E e)
Ensures that this collection contains the specified element (optional
operation).
|
abstract
boolean
|
addAll( Collection<? extends E> c)
Adds all of the elements in the specified collection to this collection
(optional operation).
|
abstract
void
|
clear()
Removes all of the elements from this collection (optional operation).
|
abstract
boolean
|
contains( Object o)
Returns true if this collection contains the specified element.
|
abstract
boolean
|
containsAll( Collection<?> c)
Returns true if this collection contains all of the elements
in the specified collection.
|
abstract
boolean
|
equals( Object o)
Compares the specified object with this collection for equality.
|
abstract
int
|
hashCode()
Returns the hash code value for this collection.
|
abstract
boolean
|
isEmpty()
Returns true if this collection contains no elements.
|
abstract
Iterator<E>
|
iterator()
Returns an iterator over the elements in this collection.
|
Stream<E>
|
parallelStream()
Returns a possibly parallel Stream with this collection as its
source.
|
abstract
boolean
|
remove( Object o)
Removes a single instance of the specified element from this
collection, if it is present (optional operation).
|
abstract
boolean
|
removeAll( Collection<?> c)
Removes all of this collection's elements that are also contained in the
specified collection (optional operation).
|
boolean
|
removeIf( Predicate<? super E> filter)
Removes all of the elements of this collection that satisfy the given
predicate.
|
abstract
boolean
|
retainAll( Collection<?> c)
Retains only the elements in this collection that are contained in the
specified collection (optional operation).
|
abstract
int
|
size()
Returns the number of elements in this collection.
|
Spliterator<E>
|
|
Stream<E>
|
stream()
Returns a sequential Stream with this collection as its source.
|
abstract
<T>
T[]
|
toArray(T[] a)
Returns an array containing all of the elements in this collection;
the runtime type of the returned array is that of the specified array.
|
abstract
Object[]
|
toArray()
Returns an array containing all of the elements in this collection.
|
Public Constructors
public
HashSet
()
Constructs a new, empty set; the backing HashMap instance has
default initial capacity (16) and load factor (0.75).
public
HashSet
(Collection<? extends E> c)
Constructs a new set containing the elements in the specified
collection. The HashMap is created with default load factor
(0.75) and an initial capacity sufficient to contain the elements in
the specified collection.
Parameters
c |
the collection whose elements are to be placed into this set |
public
HashSet
(int initialCapacity, float loadFactor)
Constructs a new, empty set; the backing HashMap instance has
the specified initial capacity and the specified load factor.
Parameters
initialCapacity |
the initial capacity of the hash map |
loadFactor |
the load factor of the hash map |
public
HashSet
(int initialCapacity)
Constructs a new, empty set; the backing HashMap instance has
the specified initial capacity and default load factor (0.75).
Parameters
initialCapacity |
the initial capacity of the hash table |
Public Methods
public
boolean
add
(E e)
Adds the specified element to this set if it is not already present.
More formally, adds the specified element e to this set if
this set contains no element e2 such that
(e==null ? e2==null : e.equals(e2)).
If this set already contains the element, the call leaves the set
unchanged and returns false.
Parameters
e |
element to be added to this set |
Returns
- true if this set did not already contain the specified
element
public
void
clear
()
Removes all of the elements from this set.
The set will be empty after this call returns.
public
Object
clone
()
Returns a shallow copy of this HashSet instance: the elements
themselves are not cloned.
Returns
- a shallow copy of this set
public
boolean
contains
(Object o)
Returns true if this set contains the specified element.
More formally, returns true if and only if this set
contains an element e such that
(o==null ? e==null : o.equals(e)).
Parameters
o |
element whose presence in this set is to be tested |
Returns
- true if this set contains the specified element
public
boolean
isEmpty
()
Returns true if this set contains no elements.
Returns
- true if this set contains no elements
public
Iterator<E>
iterator
()
Returns an iterator over the elements in this set. The elements
are returned in no particular order.
Returns
- an Iterator over the elements in this set
public
boolean
remove
(Object o)
Removes the specified element from this set if it is present.
More formally, removes an element e such that
(o==null ? e==null : o.equals(e)),
if this set contains such an element. Returns true if
this set contained the element (or equivalently, if this set
changed as a result of the call). (This set will not contain the
element once the call returns.)
Parameters
o |
object to be removed from this set, if present |
Returns
- true if the set contained the specified element
public
int
size
()
Returns the number of elements in this set (its cardinality).
Returns
- the number of elements in this set (its cardinality)
public
Spliterator<E>
spliterator
()
Returns
- a
Spliterator
over the elements in this set
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-07-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-07-10 UTC."],[[["`HashSet` stores unique elements and does not maintain insertion order, permitting one `null` element."],["It offers constant-time performance for basic operations like adding, removing, and checking for elements."],["`HashSet` is not thread-safe; use `Collections.synchronizedSet` for concurrent access."],["Choose an appropriate initial capacity and load factor to optimize performance."],["Use `HashSet` for storing unique elements, removing duplicates, and implementing set operations."]]],["`HashSet` implements the `Set` interface using a hash table, allowing one `null` element. Key actions include adding elements with `add`, removing with `remove`, checking for presence with `contains`, and obtaining the element count with `size`. Iteration order is not guaranteed. Constructors create empty or pre-populated sets with configurable initial capacity and load factor. Iterators are fail-fast. Basic operations have constant time complexity, but iteration time is proportional to the set's size and the `HashMap`'s capacity. It is not synchronized, requiring external synchronization if concurrently modified.\n"]]