|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.util.AbstractCollection
java.util.AbstractList
org.eclipse.emf.common.util.BasicEList
A highly extensible list implementation.
Nested Class Summary | |
protected static class |
BasicEList.BasicIndexOutOfBoundsException
An IndexOutOfBoundsException that constructs a message from the argument data. |
protected class |
BasicEList.EIterator
An extensible iterator implementation. |
protected class |
BasicEList.EListIterator
An extensible list iterator implementation. |
static class |
BasicEList.FastCompare
A BasicEList that uses == instead of equals to compare members. |
protected class |
BasicEList.NonResolvingEIterator
An extended read-only iterator that does not resolve objects. |
protected class |
BasicEList.NonResolvingEListIterator
An extended read-only list iterator that does not resolve objects. |
static class |
BasicEList.UnmodifiableEList
An unmodifiable version of BasicEList . |
Field Summary | |
protected Object[] |
data
The underlying data storage of the list. |
protected int |
size
The size of the list. |
Fields inherited from class java.util.AbstractList |
modCount |
Constructor Summary | |
|
BasicEList()
Creates an empty instance with no initial capacity. |
|
BasicEList(Collection collection)
Creates an instance that is a copy of the collection. |
|
BasicEList(int initialCapacity)
Creates an empty instance with the given capacity. |
protected |
BasicEList(int size,
Object[] data)
Creates an initialized instance that directly uses the given arguments. |
Method Summary | |
void |
add(int index,
Object object)
Adds the object at the given index in the list. |
boolean |
add(Object object)
Adds the object at the end of the list and returns whether the object was added; if uniqueness is required,
duplicates will be ignored and false will be returned.
|
boolean |
addAll(Collection collection)
Adds each object of the collection to the end of the list. |
boolean |
addAll(int index,
Collection collection)
Adds each object of the collection at each successive index in the list and returns whether any objects were added. |
boolean |
addAllUnique(Collection collection)
Adds each object of the collection to the end of the list; it does no uniqueness checking. |
boolean |
addAllUnique(int index,
Collection collection)
Adds each object of the collection at each successive index in the list and returns whether any objects were added; it does no ranging checking or uniqueness checking. |
boolean |
addAllUnique(int index,
Object[] objects,
int start,
int end)
Adds each object from start to end of the array at each successive index in the list and returns whether any objects were added; it does no ranging checking or uniqueness checking. |
boolean |
addAllUnique(Object[] objects,
int start,
int end)
Adds each object from start to end of the array at the index of list and returns whether any objects were added; it does no ranging checking or uniqueness checking. |
void |
addUnique(int index,
Object object)
Adds the object at the given index in the list; it does no ranging checking or uniqueness checking. |
void |
addUnique(Object object)
Adds the object at the end of the list; it does no uniqueness checking. |
protected Object |
assign(int index,
Object object)
Assigns the object into the data storage at the given index and returns the object that's been stored. |
Object |
basicGet(int index)
Returns the object at the index without resolving it. |
protected Iterator |
basicIterator()
Returns a read-only iterator that does not resolve objects.
|
protected List |
basicList()
Returns an unsafe list that provides a non-resolving view of the underlying data storage. |
protected ListIterator |
basicListIterator()
Returns a read-only list iterator that does not resolve objects.
|
protected ListIterator |
basicListIterator(int index)
Returns a read-only list iterator advanced to the given index that does not resolve objects.
|
protected boolean |
canContainNull()
Returns whether null is a valid object for the list.
|
void |
clear()
Clears the list of all objects. |
Object |
clone()
Returns a shallow copy of this list. |
boolean |
contains(Object object)
Returns whether the list contains the object. |
boolean |
containsAll(Collection collection)
Returns whether the list contains each object in the collection. |
Object[] |
data()
Returns direct unsafe access to the underlying data storage. |
protected void |
didAdd(int index,
Object newObject)
Called to indicate that an object has been added to the data storage. |
protected void |
didChange()
Called to indicate that the data storage has been changed. |
protected void |
didClear(int size,
Object[] oldObjects)
Called to indicate that the data storage has been cleared. |
protected void |
didMove(int index,
Object movedObject,
int oldIndex)
Called to indicate that an object has been moved in the data storage. |
protected void |
didRemove(int index,
Object oldObject)
Called to indicate that an object has been removed from the data storage. |
protected void |
didSet(int index,
Object newObject,
Object oldObject)
Called to indicate that the data storage has been set. |
protected boolean |
equalObjects(Object firstObject,
Object secondObject)
Returns whether two objects are equal using the appropriate comparison mechanism. |
boolean |
equals(Object object)
Returns whether the object is a list with corresponding equal objects. |
Object |
get(int index)
Returns the object at the index. |
protected Collection |
getDuplicates(Collection collection)
Returns the collection of objects in the given collection that are also contained by this list. |
protected Collection |
getNonDuplicates(Collection collection)
Returns the collection of objects in the given collection that are not also contained by this list. |
void |
grow(int minimumCapacity)
Grows the capacity of the list to ensure that no additional growth is needed until the size exceeds the specified minimun capacity. |
int |
hashCode()
Returns a hash code computed from each object's hash code. |
int |
indexOf(Object object)
Returns the position of the first occurrence of the object in the list. |
boolean |
isEmpty()
Returns whether the list has zero size. |
protected boolean |
isUnique()
Returns whether objects are constrained to appear at most once in the list. |
Iterator |
iterator()
Returns an iterator. |
int |
lastIndexOf(Object object)
Returns the position of the last occurrence of the object in the list. |
ListIterator |
listIterator()
Returns a list iterator. |
ListIterator |
listIterator(int index)
Returns a list iterator advanced to the given index. |
Object |
move(int targetIndex,
int sourceIndex)
Moves the object at the source index of the list to the target index of the list and returns the moved object. |
void |
move(int index,
Object object)
Moves the object to the index of the list. |
protected Object[] |
newData(int capacity)
Returns new allocated data storage. |
Object |
remove(int index)
Removes the object at the index from the list and returns it. |
boolean |
remove(Object object)
Removes the object from the list and returns whether the object was actually contained by the list. |
boolean |
removeAll(Collection collection)
Removes each object of the collection from the list and returns whether any object was actually contained by the list. |
protected Object |
resolve(int index,
Object object)
Resolves the object at the index and returns the result. |
boolean |
retainAll(Collection collection)
Removes from the list each object not contained by the collection and returns whether any object was actually removed. |
Object |
set(int index,
Object object)
Sets the object at the index and returns the old object at the index. |
void |
setData(int size,
Object[] data)
Updates directly and unsafely the underlying data storage. |
Object |
setUnique(int index,
Object object)
Sets the object at the index and returns the old object at the index; it does no ranging checking or uniqueness checking. |
void |
shrink()
Shrinks the capacity of the list to the minimal requirements. |
int |
size()
Returns the number of objects in the list. |
Object[] |
toArray()
Returns an array containing all the objects in sequence. |
Object[] |
toArray(Object[] array)
Returns an array containing all the objects in sequence. |
String |
toString()
Returns a string of the form "[object1, object2]" . |
protected boolean |
useEquals()
Returns whether equals rather than == should be used to compare members.
|
protected Object |
validate(int index,
Object object)
Validates a new content object and returns the validated object. |
Methods inherited from class java.util.AbstractList |
removeRange, subList |
Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface java.util.List |
subList |
Field Detail |
protected int size
protected transient Object[] data
Constructor Detail |
public BasicEList()
public BasicEList(int initialCapacity)
initialCapacity
- the initial capacity of the list before it must grow.
IllegalArgumentException
- if the initialCapacity
is negative.public BasicEList(Collection collection)
collection
- the initial contents of the list.protected BasicEList(int size, Object[] data)
size
- the size of the list.data
- the underlying storage of the list.Method Detail |
protected Object[] newData(int capacity)
protected boolean useEquals()
equals
rather than ==
should be used to compare members.
The default is to return true
but clients can optimize performance by returning false
.
The performance difference is highly significant.
equals
rather than ==
should be used.protected boolean equalObjects(Object firstObject, Object secondObject)
appropriate
comparison mechanism.
protected boolean canContainNull()
null
is a valid object for the list.
The default is to return true
, but clients can override this to exclude null
.
null
is a valid object for the list.protected boolean isUnique()
false
, but clients can override this to ensure uniqueness of contents.
The performance impact is signifcant: operations such as add
are O(n) as a result requiring uniqueness.
protected Object validate(int index, Object object)
necessary
and returns the argument object.
Clients may throw additional types of runtime exceptions
in order to handle constraint violations.
index
- the position of the new content.object
- the new content.
IllegalArgumentException
- if a constraint prevents the object from being added.protected Object assign(int index, Object object)
index
- the position of the new content.object
- the new content.
protected Object resolve(int index, Object object)
object
;
clients can use this to transform objects as they are fetched.
index
- the position of the content.object
- the content.
protected void didSet(int index, Object newObject, Object oldObject)
index
- the position that was set.newObject
- the new object at the position.oldObject
- the old object at the position.protected void didAdd(int index, Object newObject)
index
- the position object the new object.newObject
- the new object at the position.protected void didRemove(int index, Object oldObject)
index
- the position of the old object.oldObject
- the old object at the position.protected void didClear(int size, Object[] oldObjects)
didRemove
for each object;
clients can use this to monitor clearing of the data storage.
size
- the original size of the list.oldObjects
- the old data storage being discarded.didRemove(int, java.lang.Object)
protected void didMove(int index, Object movedObject, int oldIndex)
index
- the position of the moved object.movedObject
- the moved object at the position.oldIndex
- the position the object was at before the move.protected void didChange()
public int size()
size
in interface List
public boolean isEmpty()
isEmpty
in interface List
public boolean contains(Object object)
equals
or "=="
depending on useEquals
.
contains
in interface List
object
- the object in question.
useEquals()
public boolean containsAll(Collection collection)
contains
,
which may use either equals
or "=="
depending on useEquals
.
containsAll
in interface List
collection
- the collection of objects in question.
contains(java.lang.Object)
,
useEquals()
public int indexOf(Object object)
equals
or "=="
depending on useEquals
.
indexOf
in interface List
object
- the object in question.
public int lastIndexOf(Object object)
equals
or "=="
depending on useEquals
.
lastIndexOf
in interface List
object
- the object in question.
public Object[] toArray()
newData
to create typed storage in this case.
toArray
in interface List
newData(int)
public Object[] toArray(Object[] array)
toArray
in interface List
array
- the array that will be filled and returned, if it's big enough;
otherwise, a suitably large array of the same type will be allocated and used instead.
newData(int)
public Object[] data()
public void setData(int size, Object[] data)
public Object get(int index)
resolve
so that clients may transform the fetched object.
get
in interface List
index
- the position in question.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range.resolve(int, java.lang.Object)
,
basicGet(int)
public Object basicGet(int index)
resolving
it.
index
- the position in question.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range.resolve(int, java.lang.Object)
,
get(int)
public Object set(int index, Object object)
setUnique
after range checking and after uniqueness
checking.
set
in interface List
index
- the position in question.object
- the object to set.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range.
IllegalArgumentException
- if there is a constraint violation, e.g., non-uniqueness.setUnique(int, java.lang.Object)
public Object setUnique(int index, Object object)
assign
, didSet
, and didChange
.
index
- the position in question.object
- the object to set.
set(int, java.lang.Object)
public boolean add(Object object)
uniqueness
is required,
duplicates will be ignored and false
will be returned.
This implementation delegates to addUnique(Object)
after uniqueness checking.
add
in interface List
object
- the object to be added.
addUnique(Object)
public void addUnique(Object object)
assign
, didAdd
, and didChange
.
after uniqueness checking.
object
- the object to be added.add(Object)
public void add(int index, Object object)
uniqueness
is required,
duplicates will be ignored.
This implementation delegates to addUnique(int, Object)
after uniqueness checking.
add
in interface List
object
- the object to be added.
IllegalArgumentException
- if uniqueness
is required,
and the object is a duplicate.addUnique(int, Object)
public void addUnique(int index, Object object)
assign
, didAdd
, and didChange
.
object
- the object to be added.add(int, Object)
public boolean addAll(Collection collection)
uniqueness
is required,
duplicates will be removed
from the collection,
which could even result in an empty collection.
This implementation delegates to addAllUnique(Collection)
after uniqueness checking.
addAll
in interface List
collection
- the collection of objects to be added.addAllUnique(Collection)
public boolean addAllUnique(Collection collection)
assign
, didAdd
, and didChange
.
collection
- the collection of objects to be added.addAll(Collection)
public boolean addAll(int index, Collection collection)
uniqueness
is required,
duplicates will be removed
from the collection,
which could even result in an empty collection.
This implementation delegates to addAllUnique(int, Collection)
after uniqueness checking.
addAll
in interface List
index
- the index at which to add.collection
- the collection of objects to be added.
addAllUnique(int, Collection)
public boolean addAllUnique(int index, Collection collection)
assign
, didAdd
, and didChange
.
index
- the index at which to add.collection
- the collection of objects to be added.
addAll(int, Collection)
public boolean addAllUnique(Object[] objects, int start, int end)
assign
, didAdd
, and didChange
.
objects
- the objects to be added.start
- the index of first object to be added.end
- the index past teh last object to be added.
#addAllUnique(int Object[], int, int)
public boolean addAllUnique(int index, Object[] objects, int start, int end)
assign
, didAdd
, and didChange
.
index
- the index at which to add.objects
- the objects to be added.start
- the index of first object to be added.end
- the index past the last object to be added.
addAllUnique(Object[], int, int)
public boolean remove(Object object)
indexOf
to find the object
and delegates to remove(int)
in the case that it finds the object.
remove
in interface List
object
- the object to be removed.
public boolean removeAll(Collection collection)
removeAll
in interface List
collection
- the collection of objects to be removed.
public Object remove(int index)
didRemove
and didChange
.
remove
in interface List
index
- the position of the object to remove.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range.public boolean retainAll(Collection collection)
remove(int)
in the case that it finds an object that isn't retained.
retainAll
in interface List
collection
- the collection of objects to be retained.
public void clear()
didClear
and didChange
.
clear
in interface List
public void move(int index, Object object)
indexOf(java.lang.Object)
of find the object
and delegates to move(int, int)
.
move
in interface EList
index
- the new position for the object in the list.object
- the object to be moved.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range or the object isn't contained by the list.public Object move(int targetIndex, int sourceIndex)
assign
, didMove
, and didChange
.
move
in interface EList
targetIndex
- the new position for the object in the list.sourceIndex
- the old position of the object in the list.
BasicEList.BasicIndexOutOfBoundsException
- if either index isn't within the size range.public void shrink()
grow(int)
public void grow(int minimumCapacity)
shrink()
public Object clone()
public boolean equals(Object object)
equals
or "=="
depending on useEquals
.
equals
in interface List
useEquals()
public int hashCode()
hashCode
in interface List
public String toString()
"[object1, object2]"
.
"[object1, object2]"
.public Iterator iterator()
BasicEList.EIterator
.
iterator
in interface List
BasicEList.EIterator
protected Iterator basicIterator()
resolve
objects.
This implementation allocates a BasicEList.NonResolvingEIterator
.
public ListIterator listIterator()
BasicEList.EListIterator
.
listIterator
in interface List
BasicEList.EListIterator
public ListIterator listIterator(int index)
BasicEList.EListIterator
.
listIterator
in interface List
index
- the starting index.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range.BasicEList.EListIterator
protected ListIterator basicListIterator()
resolve
objects.
This implementation allocates a BasicEList.NonResolvingEListIterator
.
protected ListIterator basicListIterator(int index)
resolve
objects.
This implementation allocates a BasicEList.NonResolvingEListIterator
.
index
- the starting index.
BasicEList.BasicIndexOutOfBoundsException
- if the index isn't within the size range.protected List basicList()
non-resolving
view of the underlying data storage.
protected Collection getDuplicates(Collection collection)
collection
- the other collection.
protected Collection getNonDuplicates(Collection collection)
collection
- the other collection.
|
Copyright 2001-2006 IBM Corporation and others. All Rights Reserved. |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |