Package org.plumelib.util
Class IdentityArraySet<E extends @UnknownSignedness Object>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
org.plumelib.util.IdentityArraySet<E>
- Type Parameters:
E- the type of the set elements
- All Implemented Interfaces:
Iterable<E>,Collection<E>,Set<E>
A set backed by an array. It uses object identity (==) for comparison. It permits null values and
its iterator has deterministic ordering.
Compared to a set built on IdentityHashMap: For very small sets, this uses much less space, has comparable performance, and (like a LinkedHashSet) is deterministic, with elements returned in the order they were inserted. For large sets, this is significantly less performant than other set implementations.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classAn iterator over the IdentityArraySet. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate @org.checkerframework.checker.index.qual.NonNegative,@org.checkerframework.checker.index.qual.LessThan({"values.length + 1"}),@org.checkerframework.checker.index.qual.IndexOrHigh({"values"}) intThe number of used slots in the representation of this.(package private) intThe number of times this set's size has been modified by adding or removing an element.private @Nullable E[]The values. -
Constructor Summary
ConstructorsModifierConstructorDescriptionConstructs an emptyIdentityArraySetwith the default initial capacity.IdentityArraySet(int initialCapacity) Constructs an emptyIdentityArraySetwith the specified initial capacity.privateIdentityArraySet(E[] values, @org.checkerframework.checker.index.qual.LTEqLengthOf({"values"}) int size) Private constructor.IdentityArraySet(Collection<? extends E> m) Constructs a newIdentityArraySetwith the same elements as the given collection. -
Method Summary
Modifier and TypeMethodDescriptionprivate booleanAdds an element to this set.booleanbooleanaddAll(Collection<? extends E> c) voidclear()clone()Returns a copy of this.booleanvoidprivate voidgrow()Increases the capacity of the array.private intReturns the index of the given value, or -1 if it does not appear.booleanisEmpty()iterator()booleanbooleanremoveAll(Collection<?> c) private booleanremoveIndex(@org.checkerframework.checker.index.qual.GTENegativeOne int index) Remove the element at the given index.(package private) Stringrepr()Returns the internal representation, printed.@org.checkerframework.checker.index.qual.NonNegative intsize()Methods inherited from class java.util.AbstractSet
equals, hashCodeMethods inherited from class java.util.AbstractCollection
containsAll, retainAll, toArray, toArray, toStringMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArrayMethods inherited from interface java.util.Set
containsAll, retainAll, spliterator, toArray, toArray
-
Field Details
-
values
The values. Null if capacity=0. -
size
private @org.checkerframework.checker.index.qual.NonNegative,@org.checkerframework.checker.index.qual.LessThan({"values.length + 1"}),@org.checkerframework.checker.index.qual.IndexOrHigh({"values"}) int sizeThe number of used slots in the representation of this. -
sizeModificationCount
transient int sizeModificationCountThe number of times this set's size has been modified by adding or removing an element. This field is used to make view iterators fail-fast.
-
-
Constructor Details
-
IdentityArraySet
@SideEffectFree public IdentityArraySet(int initialCapacity) Constructs an emptyIdentityArraySetwith the specified initial capacity.- Parameters:
initialCapacity- the initial capacity- Throws:
IllegalArgumentException- if the initial capacity is negative
-
IdentityArraySet
@SideEffectFree public IdentityArraySet()Constructs an emptyIdentityArraySetwith the default initial capacity. -
IdentityArraySet
@SideEffectFree private IdentityArraySet(E[] values, @org.checkerframework.checker.index.qual.LTEqLengthOf({"values"}) int size) Private constructor. Installs the given objects in this as its representation, without making defensive copies.- Parameters:
values- the valuessize- the number of used items in the array; may be less than its length
-
IdentityArraySet
Constructs a newIdentityArraySetwith the same elements as the given collection.- Parameters:
m- the collection whose elements are to be placed in the new set- Throws:
NullPointerException- if the given set is null
-
-
Method Details
-
add
Adds an element to this set.- Parameters:
index- the index ofvalueinvalues. If -1, add a new element. Otherwise, do nothing.value- the value- Returns:
- true if the method modified this set
-
grow
private void grow()Increases the capacity of the array. -
removeIndex
private boolean removeIndex(@org.checkerframework.checker.index.qual.GTENegativeOne int index) Remove the element at the given index. Does nothing if index is -1.- Parameters:
index- the index of the element to remove- Returns:
- true if this set was modified
-
size
@Pure public @org.checkerframework.checker.index.qual.NonNegative int size() -
isEmpty
@Pure public boolean isEmpty() -
indexOf
Returns the index of the given value, or -1 if it does not appear. Uses==for comparison.- Parameters:
value- a value to find- Returns:
- the index of the given value, or -1 if it does not appear
-
contains
-
add
-
remove
-
addAll
-
removeAll
-
clear
public void clear() -
iterator
- Specified by:
iteratorin interfaceCollection<E extends @UnknownSignedness Object>- Specified by:
iteratorin interfaceIterable<E extends @UnknownSignedness Object>- Specified by:
iteratorin interfaceSet<E extends @UnknownSignedness Object>- Specified by:
iteratorin classAbstractCollection<E extends @UnknownSignedness Object>
-
forEach
-
clone
Returns a copy of this. -
repr
Returns the internal representation, printed.- Returns:
- the internal representation, printed
-