public class NonBlockingSetInt
extends java.util.AbstractSet<java.lang.Integer>
implements java.io.Serializable
longs. All operations are non-blocking and multi-threaded safe.
contains(int) calls are roughly the same speed as a {load, mask}
sequence. add(int) and remove(int) calls are a tad more
expensive than a {load, mask, store} sequence because they must use a CAS.
The bit-vector is auto-sizing.
General note of caution: The Set API allows the use of Integer
with silent autoboxing - which can be very expensive if many calls are
being made. Since autoboxing is silent you may not be aware that this is
going on. The built-in API takes lower-case ints and is much more
efficient.
Space: space is used in proportion to the largest element, as opposed to the number of elements (as is the case with hash-table based Set implementations). Space is approximately (largest_element/8 + 64) bytes. The implementation is a simple bit-vector using CAS for update.
| Constructor and Description |
|---|
NonBlockingSetInt()
Create a new empty bit-vector
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(int i)
Add
i to the set. |
boolean |
add(java.lang.Integer i)
Add
i to the set. |
void |
clear()
Empty the bitvector.
|
boolean |
contains(int i)
Test if
i is in the set. |
boolean |
contains(java.lang.Object o)
Test if
o is in the set. |
java.util.Iterator<java.lang.Integer> |
iterator()
Standard Java
Iterator. |
void |
print()
Verbose printout of internal structure for debugging.
|
boolean |
remove(int i)
Remove
i from the set. |
boolean |
remove(java.lang.Object o)
Remove
o from the set. |
int |
size()
Current count of elements in the set.
|
addAll, containsAll, isEmpty, retainAll, toArray, toArray, toStringpublic boolean add(java.lang.Integer i)
i to the set. Uppercase Integer version of add,
requires auto-unboxing. When possible use the int version of
add(int) for efficiency.add in interface java.util.Collection<java.lang.Integer>add in interface java.util.Set<java.lang.Integer>add in class java.util.AbstractCollection<java.lang.Integer>java.lang.IllegalArgumentException - if i is negative.public boolean contains(java.lang.Object o)
o is in the set. This is the uppercase Integer
version of contains, requires a type-check and auto-unboxing. When
possible use the int version of contains(int) for
efficiency.contains in interface java.util.Collection<java.lang.Integer>contains in interface java.util.Set<java.lang.Integer>contains in class java.util.AbstractCollection<java.lang.Integer>public boolean remove(java.lang.Object o)
o from the set. This is the uppercase Integer
version of remove, requires a type-check and auto-unboxing. When
possible use the int version of remove(int) for
efficiency.remove in interface java.util.Collection<java.lang.Integer>remove in interface java.util.Set<java.lang.Integer>remove in class java.util.AbstractCollection<java.lang.Integer>public boolean add(int i)
i to the set. This is the lower-case 'int' version
of add(java.lang.Integer) - no autoboxing. Negative values throw
IllegalArgumentException.java.lang.IllegalArgumentException - if i is negative.public boolean contains(int i)
i is in the set. This is the lower-case 'int'
version of contains(java.lang.Object) - no autoboxing.public boolean remove(int i)
i from the set. This is the fast lower-case 'int'
version of remove(java.lang.Object) - no autoboxing.public int size()
size in interface java.util.Collection<java.lang.Integer>size in interface java.util.Set<java.lang.Integer>size in class java.util.AbstractCollection<java.lang.Integer>public void clear()
clear in interface java.util.Collection<java.lang.Integer>clear in interface java.util.Set<java.lang.Integer>clear in class java.util.AbstractCollection<java.lang.Integer>public void print()
public java.util.Iterator<java.lang.Integer> iterator()
Iterator. Not very efficient because it
auto-boxes the returned values.iterator in interface java.lang.Iterable<java.lang.Integer>iterator in interface java.util.Collection<java.lang.Integer>iterator in interface java.util.Set<java.lang.Integer>iterator in class java.util.AbstractCollection<java.lang.Integer>