public class SortedBag<E> extends AbstractCollection<E>
This implementation is not thread-safe and does not support null elements.
Modifier and Type | Class and Description |
---|---|
protected class |
SortedBag.UniqueElement<E>
UniqueElement represents a unique instance of a logical element in the bag.
|
protected class |
SortedBag.ViewBag
A range-limited view of the SortedBag.
|
protected class |
SortedBag.WrapperComparator
WrapperComparator is a Comparator implementation that is aware of
SortedBag.UniqueElement wrappers and will delegate the comparison of the elements in both forms to the wrapped comparator. |
Modifier and Type | Field and Description |
---|---|
protected AtomicLong |
m_atomicNonce
The nonce used to increment the unique element ids.
|
protected Comparator<? super E> |
m_comparator
The comparator used to compare logical elements.
|
protected NavigableMap |
m_map
The internal sorted map holding the bag contents.
|
protected static Object |
NO_VALUE
Marker value object.
|
Modifier | Constructor and Description |
---|---|
protected |
SortedBag()
Default constructor.
|
|
SortedBag(Comparator<? super E> comparator)
Construct a SortedBag whose elements are to be ordered by the specified comparator.
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(E o) |
boolean |
contains(Object o) |
E |
first()
Returns the first (lowest) element currently in this bag.
|
protected Comparator<? super E> |
getComparator()
Return the Comparator used to order the bag contents.
|
protected NavigableMap |
getInternalMap()
Return the internal sorted-map holding the bag contents.
|
protected AtomicLong |
getNonceCounter()
Return the nonce counter used to assign unique element ids.
|
SortedBag<E> |
headBag(E toElement)
Returns a view of the portion of this bag whose elements are strictly less than toElement.
|
protected NavigableMap |
instantiateInternalMap(Comparator comparator)
Factory for the sorted internal map to use to hold the bag elements.
|
boolean |
isEmpty() |
Iterator<E> |
iterator() |
E |
last()
Returns the last (highest) element currently in this bag.
|
boolean |
remove(Object o) |
E |
removeFirst()
Remove and return the least element in this bag, or null if empty.
|
E |
removeLast()
Remove and return the greatest element in this bag, or null if empty.
|
int |
size() |
SortedBag<E> |
subBag(E fromElement, E toElement)
Returns a view of the portion of this bag whose elements range from fromElement, inclusive, to toElement, exclusive.
|
SortedBag<E> |
tailBag(E fromElement)
Returns a view of the portion of this bag whose elements are greater than or equal to fromElement.
|
protected E |
unwrap(Object o)
Unwrap the specified element (which could be a
wrapped or an "actual") element. |
protected SortedBag.UniqueElement<E> |
wrap(E o)
Wrap the specified element to ensure uniqueness.
|
addAll, clear, containsAll, removeAll, retainAll, toArray, toArray, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
equals, hashCode, parallelStream, removeIf, spliterator, stream
protected static final Object NO_VALUE
protected AtomicLong m_atomicNonce
protected NavigableMap m_map
protected Comparator<? super E> m_comparator
protected SortedBag()
public SortedBag(Comparator<? super E> comparator)
comparator
- the comparator to use to order the elementsprotected NavigableMap getInternalMap()
protected Comparator<? super E> getComparator()
protected AtomicLong getNonceCounter()
public int size()
size
in interface Collection<E>
size
in class AbstractCollection<E>
public boolean isEmpty()
isEmpty
in interface Collection<E>
isEmpty
in class AbstractCollection<E>
public boolean contains(Object o)
contains
in interface Collection<E>
contains
in class AbstractCollection<E>
public Iterator<E> iterator()
iterator
in interface Iterable<E>
iterator
in interface Collection<E>
iterator
in class AbstractCollection<E>
public boolean add(E o)
add
in interface Collection<E>
add
in class AbstractCollection<E>
public boolean remove(Object o)
remove
in interface Collection<E>
remove
in class AbstractCollection<E>
public SortedBag<E> subBag(E fromElement, E toElement)
The returned bag will throw an IllegalArgumentException on an attempt to insert an element outside its range.
fromElement
- low endpoint (inclusive) of the returned bagtoElement
- high endpoint (exclusive) of the returned bagClassCastException
- if fromElement and toElement cannot be compared to one another using this bag's comparator (or, if the bag has no comparator, using natural ordering). Implementations may, but are not required to, throw this exception if fromElement or toElement cannot be compared to elements currently in the bag.NullPointerException
- if fromElement or toElement is null and this bag does not permit null elementsIllegalArgumentException
- if fromElement is greater than toElement; or if this bag itself has a restricted range, and fromElement or toElement lies outside the bounds of the rangepublic SortedBag<E> headBag(E toElement)
The returned bag will throw an IllegalArgumentException on an attempt to insert an element outside its range.
toElement
- high endpoint (exclusive) of the returned bagClassCastException
- if toElement is not compatible with this bag's comparator (or, if the bag has no comparator, if toElement does not implement Comparable
). Implementations may, but are not required to, throw this exception if toElement cannot be compared to elements currently in the bag.NullPointerException
- if toElement is null and this bag does not permit null elementsIllegalArgumentException
- if this bag itself has a restricted range, and toElement lies outside the bounds of the rangepublic SortedBag<E> tailBag(E fromElement)
The returned bag will throw an IllegalArgumentException on an attempt to insert an element outside its range.
fromElement
- low endpoint (inclusive) of the returned bagClassCastException
- if fromElement is not compatible with this bag's comparator (or, if the bag has no comparator, if fromElement does not implement Comparable
). Implementations may, but are not required to, throw this exception if fromElement cannot be compared to elements currently in the bag.NullPointerException
- if fromElement is null and this bag does not permit null elementsIllegalArgumentException
- if this bag itself has a restricted range, and fromElement lies outside the bounds of the rangepublic E first()
NoSuchElementException
- if this bag is emptypublic E last()
NoSuchElementException
- if this bag is emptypublic E removeFirst()
public E removeLast()
protected NavigableMap instantiateInternalMap(Comparator comparator)
comparator
- the comparator to use to sort the bag elementsprotected SortedBag.UniqueElement<E> wrap(E o)
o
- the element to wrap