|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.neeve.lang.XLongCollectionBase
public abstract class XLongCollectionBase
This class represents collections which can quickly be iterated over
(forward or backward) and which an be made thread-safe
and/or unmodifiable
.
XLongCollection
s can be iterated over without creating new objects
and without using iterators
.
[code]
public boolean search(Object item, XCollection c) {
for (LongRecord r = c.head(), end = c.tail(); (r = r.getNext()) != end;) {
if (item.equals(c.valueOf(r))) return true;
}
return false;
}
[/code]
Alternatively XCollection}s can be iterated over using reusableIterator()
,
Utilization of this iterators does not introduce garbage because it is created once.
This iterator may not be used concurrently by multiple threads as they are
single instance by nature.
XLongCollection
s are thread-safe when marked shared
(can be read, iterated over or modified concurrently).
[code]
public class Foo {
private static final CollectionXLinkedHashMap
().shared();
public Foo() {
INSTANCES.add(this);
}
public static void showInstances() {
for (Foo foo : INSTANCES) { // Iterations are thread-safe even if new Foo instances are added.
System.out.println(foo);
}
}
}[/code]
This class was based on collections code from http://javolution.org, but modified for use outside of realtime jvms.
Method Summary | |
---|---|
boolean |
add(long value)
Appends the specified value to the end of this collection (optional operation). |
boolean |
addAll(XLongCollection c)
Appends all of the values in the specified collection to the end of this collection, in the order that they are returned by the specified collection's iterator. |
void |
clear()
Removes all of the values from this collection (optional operation). |
boolean |
contains(long value)
Indicates if this collection contains the specified value. |
boolean |
containsAll(XLongCollection c)
Indicates if this collection contains all of the values of the specified collection. |
abstract void |
delete(XCollection.Record record)
Deletes the specified record from this collection. |
boolean |
equals(Object obj)
Compares the specified object with this collection for equality. |
int |
hashCode()
Returns the hash code for this collection. |
abstract XCollection.Record |
head()
Returns the head record of this collection; it is the record such as head().getNext() holds the first collection value. |
boolean |
isEmpty()
Indicates if this collection is empty. |
XLongIterator |
iterator()
Returns an iterator over the elements in this collection |
boolean |
remove(long value)
Removes the first occurrence in this collection of the specified value (optional operation). |
boolean |
removeAll(XLongCollection c)
Removes from this collection all the values that are contained in the specified collection. |
boolean |
retainAll(XLongCollection c)
Retains only the values in this collection that are contained in the specified collection. |
XLongIterator |
reusableIterator()
Returns an iterator over the elements in this collection. |
XLongCollection |
shared()
Returns a thread-safe read-write view of this collection. |
abstract int |
size()
Returns the number of values in this collection. |
abstract XCollection.Record |
tail()
Returns the tail record of this collection; it is the record such as tail().getPrevious() holds the last collection value. |
long[] |
toArray()
Returns a new array allocated on the heap containing all of the values in this collection in proper sequence. |
long[] |
toArray(long[] array)
Fills the specified array with the values of this collection in the proper sequence. |
String |
toString()
Returns a string representation of this collection. |
XLongCollection |
unmodifiable()
Returns the unmodifiable view associated to this collection. |
abstract long |
valueOf(XCollection.Record record)
Returns the collection value for the specified record. |
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, wait, wait, wait |
Method Detail |
---|
public abstract int size()
size
in interface XLongCollection
public abstract XCollection.Record head()
head().getNext()
holds the first collection value.
head
in interface XLongCollection
public abstract XCollection.Record tail()
tail().getPrevious()
holds the last collection value.
tail
in interface XLongCollection
public abstract long valueOf(XCollection.Record record)
valueOf
in interface XLongCollection
record
- the record whose current value is returned.
public abstract void delete(XCollection.Record record)
Implementation must ensure that removing a record from the collection does not affect in any way the records preceding the record being removed (it might affect the next records though, e.g. in a list collection, the indices of the subsequent records will change).
delete
in interface XLongCollection
record
- the record to be removed.
UnsupportedOperationException
- if not supported.public XLongCollection unmodifiable()
UnsupportedOperationException
being thrown.
unmodifiable
in interface XLongCollection
public XLongCollection shared()
Returns a thread-safe read-write view of this collection.
The default implementation performs synchronization on read and write. Sub-classes may provide more efficient implementation (e.g. only synchronizing on writes modifying the internal data structure).
Having a shared collection does not mean that modifications made by onethread are automatically viewed by others thread. Which in practice is not an issue. In a well-behaved system, threads need to synchronize only at predetermined synchronization points (the fewer the better).
shared
in interface XLongCollection
public XLongIterator iterator()
iterator
in interface XLongCollection
public XLongIterator reusableIterator()
XCollectionIterator.toFirst()
on the iterator prior to returning
it.
reusableIterator
in interface XLongCollection
public boolean add(long value)
Note: This default implementation always throws
UnsupportedOperationException
.
add
in interface XLongCollection
value
- the value to be appended to this collection.
true
(as per the general contract of the
Collection.add
method).
UnsupportedOperationException
- if not supported.public boolean remove(long value)
remove
in interface XLongCollection
value
- the value to be removed from this collection.
true
if this collection contained the specified
value; false
otherwise.
UnsupportedOperationException
- if not supported.public void clear()
clear
in interface XLongCollection
UnsupportedOperationException
- if not supported.public boolean isEmpty()
isEmpty
in interface XLongCollection
true
if this collection contains no value;
false
otherwise.public boolean contains(long value)
contains
in interface XLongCollection
value
- the value whose presence in this collection
is to be tested.
true
if this collection contains the specified
value;false
otherwise.public boolean addAll(XLongCollection c)
addAll
in interface XLongCollection
c
- collection whose values are to be added to this collection.
true
if this collection changed as a result of
the call; false
otherwise.public boolean containsAll(XLongCollection c)
containsAll
in interface XLongCollection
c
- collection to be checked for containment in this collection.
true
if this collection contains all of the values
of the specified collection; false
otherwise.public boolean removeAll(XLongCollection c)
removeAll
in interface XLongCollection
c
- collection that defines which values will be removed from
this collection.
true
if this collection changed as a result of
the call; false
otherwise.public boolean retainAll(XLongCollection c)
retainAll
in interface XLongCollection
c
- collection that defines which values this set will retain.
true
if this collection changed as a result of
the call; false
otherwise.public long[] toArray()
Note: To avoid heap allocation toArray(long[])
is
recommended.
toArray
in interface XLongCollection
toArray(new Object[size()])
public long[] toArray(long[] array)
toArray
in interface XLongCollection
array
- the array into which the values of this collection
are to be stored.
public String toString()
String.valueOf(Object)
.
toString
in class Object
public boolean equals(Object obj)
List
instances).
equals
in interface XLongCollection
equals
in class Object
obj
- the object to be compared for equality with this collection
true
if the specified object is a collection with
the same content and iteration order when necessary;
false
otherwise.public int hashCode()
hashCode
in interface XLongCollection
hashCode
in class Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |