Package org.apache.pivot.collections
Class ArrayList<T>
- java.lang.Object
-
- org.apache.pivot.collections.ArrayList<T>
-
- Type Parameters:
T
- Type of the list elements.
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Iterable<T>
,Collection<T>
,List<T>
,Sequence<T>
- Direct Known Subclasses:
ValueSeries
public class ArrayList<T> extends java.lang.Object implements List<T>, java.io.Serializable
Implementation of theList
interface that is backed by an array.NOTE This class is not thread-safe. For concurrent access, use a
SynchronizedList
.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.pivot.collections.List
List.ItemIterator<T>, List.ListListenerList<T>
-
Nested classes/interfaces inherited from interface org.apache.pivot.collections.Sequence
Sequence.Tree<T>
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_CAPACITY
-
Constructor Summary
Constructors Constructor Description ArrayList()
Construct a new unsorted ArrayList with the default capacity.ArrayList(int capacity)
Construct a new unsorted ArrayList with the given initial capacity.ArrayList(int capacity, java.util.Comparator<T> comparator)
Construct a new ArrayList to be sorted by the given comparator, with the given capacity.ArrayList(java.util.Collection<T> c)
Copy the given collection into a new ArrayList.ArrayList(java.util.Comparator<T> comparator)
Construct a new ArrayList to be sorted by the given comparator, with the default capacity.ArrayList(ArrayList<T> arrayList)
Copy the given ArrayList into a new one.ArrayList(ArrayList<T> arrayList, int index, int count)
Construct a new ArrayList with a subset of the given ArrayList.ArrayList(Sequence<T> items)
Construct a new ArrayList with the given sequence of items.ArrayList(Sequence<T> items, int index, int count)
Construct a new ArrayList with a subset of the given sequence of items.ArrayList(T... items)
Construct a new ArrayList with the given list of items.ArrayList(T[] items, int index, int count)
Construct a new ArrayList with a subset of the given list of items.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
add(T item)
Adds an item to the list.static <T extends java.lang.Comparable<? super T>>
intbinarySearch(ArrayList<T> arrayList, T item)
Search for an item in the given list using the elements' "natural" ordering.static <T> int
binarySearch(ArrayList<T> arrayList, T item, java.util.Comparator<T> comparator)
Search for a given element in the list using the "binary search" algorithm, which requires a comparator to establish the sort order of the elements.void
clear()
Removes all elements from the collection.void
ensureCapacity(int capacity)
Ensure there is sufficient capacity in the internal storage for the given number of items.boolean
equals(java.lang.Object o)
T
get(int index)
Retrieves the item at the given index.int
getCapacity()
java.util.Comparator<T>
getComparator()
Returns the collection's sort order.int
getLength()
Returns the length of the list.ListenerList<ListListener<T>>
getListListeners()
Returns the list listener list.int
hashCode()
int
indexOf(T item)
Returns the index of an item in the sequence.void
insert(T item, int index)
Inserts an item into the list.boolean
isEmpty()
Tests the emptiness of the collection.List.ItemIterator<T>
iterator()
Sequence<T>
remove(int index, int count)
Removes one or more items from the sequence.int
remove(T item)
Removes the first occurrence of the given item from the sequence.void
setComparator(java.util.Comparator<T> comparator)
Sets the collection's sort order, re-ordering the collection's contents and ensuring that new entries preserve the sort order.static <T extends java.lang.Comparable<? super T>>
voidsort(ArrayList<T> arrayList)
Sort the given array list according to the "natural" sort order of the comparable elements.static <T> void
sort(ArrayList<T> arrayList, int from, int to, java.util.Comparator<T> comparator)
Sort a portion of the given list.static <T> void
sort(ArrayList<T> arrayList, java.util.Comparator<T> comparator)
Sort the current contents of the given list using the given comparator.java.lang.Object[]
toArray()
T[]
toArray(java.lang.Class<? extends T[]> type)
java.lang.String
toString()
void
trimToSize()
Trim the internal storage for this list to exactly fit the current number of items in it.T
update(int index, T item)
Updates the item at the given index.
-
-
-
Field Detail
-
DEFAULT_CAPACITY
public static final int DEFAULT_CAPACITY
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ArrayList
public ArrayList()
Construct a new unsorted ArrayList with the default capacity.
-
ArrayList
public ArrayList(java.util.Comparator<T> comparator)
Construct a new ArrayList to be sorted by the given comparator, with the default capacity.- Parameters:
comparator
- A comparator to sort the entries in the list.
-
ArrayList
public ArrayList(int capacity)
Construct a new unsorted ArrayList with the given initial capacity.- Parameters:
capacity
- The initial capacity for this list.- Throws:
java.lang.IllegalArgumentException
- if the given capacity is negative.
-
ArrayList
public ArrayList(int capacity, java.util.Comparator<T> comparator)
Construct a new ArrayList to be sorted by the given comparator, with the given capacity.- Parameters:
capacity
- The initial capacity for this list.comparator
- The comparator to use when sorting the list.
-
ArrayList
public ArrayList(T... items)
Construct a new ArrayList with the given list of items.- Parameters:
items
- The initial list of values for the list.
-
ArrayList
public ArrayList(T[] items, int index, int count)
Construct a new ArrayList with a subset of the given list of items.- Parameters:
items
- The full array of items to choose from.index
- The starting location of the items to choose.count
- The count of items to pick from the full array, starting at the index.- Throws:
java.lang.IndexOutOfBoundsException
- if the given index is negative or greater than the count.
-
ArrayList
public ArrayList(Sequence<T> items)
Construct a new ArrayList with the given sequence of items.- Parameters:
items
- The initial list of values for the list.
-
ArrayList
public ArrayList(Sequence<T> items, int index, int count)
Construct a new ArrayList with a subset of the given sequence of items.- Parameters:
items
- The full sequence of items to choose from.index
- The starting location of the items to choose.count
- The count of items to pick from the full sequence, starting at the index.- Throws:
java.lang.IndexOutOfBoundsException
- if the given index is negative or greater than the count.
-
ArrayList
public ArrayList(ArrayList<T> arrayList)
Copy the given ArrayList into a new one.- Parameters:
arrayList
- The existing list to copy into this one.
-
ArrayList
public ArrayList(ArrayList<T> arrayList, int index, int count)
Construct a new ArrayList with a subset of the given ArrayList.- Parameters:
arrayList
- The full list of items to choose from.index
- The starting location of the items to choose.count
- The count of items to pick from the full list, starting at the index.- Throws:
java.lang.IndexOutOfBoundsException
- if the given index is negative or greater than the count.
-
ArrayList
public ArrayList(java.util.Collection<T> c)
Copy the given collection into a new ArrayList.- Parameters:
c
- The existing collection to copy into this list.
-
-
Method Detail
-
add
public int add(T item)
Description copied from interface:List
Adds an item to the list. If the list is unsorted, the item is appended to the end of the list. Otherwise, it is inserted at the appropriate index.
-
insert
public void insert(T item, int index)
Description copied from interface:List
Inserts an item into the list.
-
update
public T update(int index, T item)
Description copied from interface:List
Updates the item at the given index.- Specified by:
update
in interfaceList<T>
- Specified by:
update
in interfaceSequence<T>
- Parameters:
index
- The index of the item to update.item
- The item that will replace any existing value at the given index.- Returns:
- The item that was previously stored at the given index.
- See Also:
ListListener.itemUpdated(List, int, Object)
-
remove
public int remove(T item)
Description copied from interface:Sequence
Removes the first occurrence of the given item from the sequence.- Specified by:
remove
in interfaceSequence<T>
- Parameters:
item
- The item to remove.- Returns:
- The index of the item that was removed, or
-1
if the item could not be found. - See Also:
Sequence.remove(int, int)
-
remove
public Sequence<T> remove(int index, int count)
Description copied from interface:Sequence
Removes one or more items from the sequence.- Specified by:
remove
in interfaceList<T>
- Specified by:
remove
in interfaceSequence<T>
- Parameters:
index
- The starting index to remove.count
- The number of items to remove, beginning withindex
.- Returns:
- A sequence containing the items that were removed.
- See Also:
ListListener.itemsRemoved(List, int, Sequence)
-
clear
public void clear()
Description copied from interface:Collection
Removes all elements from the collection.- Specified by:
clear
in interfaceCollection<T>
- Specified by:
clear
in interfaceList<T>
- See Also:
ListListener.itemsRemoved(List, int, Sequence)
-
get
public T get(int index)
Description copied from interface:Sequence
Retrieves the item at the given index.
-
indexOf
public int indexOf(T item)
Description copied from interface:Sequence
Returns the index of an item in the sequence.
-
isEmpty
public boolean isEmpty()
Description copied from interface:Collection
Tests the emptiness of the collection.- Specified by:
isEmpty
in interfaceCollection<T>
- Returns:
true
if the collection contains no elements;false
, otherwise.
-
getLength
public int getLength()
Description copied from interface:List
Returns the length of the list.
-
trimToSize
public void trimToSize()
Trim the internal storage for this list to exactly fit the current number of items in it.
-
ensureCapacity
public void ensureCapacity(int capacity)
Ensure there is sufficient capacity in the internal storage for the given number of items. This can be used before a large number of inserts to avoid many incremental storage updates during the inserts.If there is already sufficient storage for the given capacity nothing happens, regardless of how many items are currently in the list. This means that to ensure capacity for the current length plus "n" new items, this method should be called with the
getLength()
plus the number of items to insert.- Parameters:
capacity
- The new capacity to allow for.
-
getCapacity
public int getCapacity()
- Returns:
- The current capacity of the list, that is, how many items can be stored before allocating more memory.
-
toArray
public java.lang.Object[] toArray()
- Returns:
- The current contents of the list as an array of objects.
-
toArray
public T[] toArray(java.lang.Class<? extends T[]> type)
- Parameters:
type
- The type of the array elements to be returned (which should match the declared type of this ArrayList).- Returns:
- The current contents of the list as an array of the given type.
-
getComparator
public java.util.Comparator<T> getComparator()
Description copied from interface:Collection
Returns the collection's sort order.- Specified by:
getComparator
in interfaceCollection<T>
- Returns:
- The comparator used to order elements in the collection, or
null
if the sort order is undefined. - See Also:
Collection.setComparator(Comparator)
-
setComparator
public void setComparator(java.util.Comparator<T> comparator)
Description copied from interface:Collection
Sets the collection's sort order, re-ordering the collection's contents and ensuring that new entries preserve the sort order.Calling this method more than once with the same comparator will re-sort the collection.
- Specified by:
setComparator
in interfaceCollection<T>
- Specified by:
setComparator
in interfaceList<T>
- Parameters:
comparator
- The comparator used to order elements in the collection, or null if the collection is unsorted.- See Also:
ListListener.comparatorChanged(List, Comparator)
-
iterator
public List.ItemIterator<T> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<T>
-
getListListeners
public ListenerList<ListListener<T>> getListListeners()
Description copied from interface:List
Returns the list listener list.- Specified by:
getListListeners
in interfaceList<T>
- Returns:
- The list of listeners for this list.
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
sort
public static <T> void sort(ArrayList<T> arrayList, java.util.Comparator<T> comparator)
Sort the current contents of the given list using the given comparator.- Type Parameters:
T
- Type of the list elements.- Parameters:
arrayList
- The list to sort.comparator
- The comparator to use to establish the sort order.
-
sort
public static <T> void sort(ArrayList<T> arrayList, int from, int to, java.util.Comparator<T> comparator)
Sort a portion of the given list.- Type Parameters:
T
- Type of the list elements.- Parameters:
arrayList
- The list to sort.from
- The beginning index in the list of the items to sort (inclusive).to
- The ending index of the items to sort (exclusive), that is, the elements from "from" to "to - 1" are sorted on return.comparator
- The comparator to use to establish the sorted order.
-
sort
public static <T extends java.lang.Comparable<? super T>> void sort(ArrayList<T> arrayList)
Sort the given array list according to the "natural" sort order of the comparable elements.The elements must implement the
Comparable
interface, as the default sort calls theComparable.compareTo(T)
method to order the elements.- Type Parameters:
T
- The comparable type of the elements in the list.- Parameters:
arrayList
- The list to sort.
-
binarySearch
public static <T> int binarySearch(ArrayList<T> arrayList, T item, java.util.Comparator<T> comparator)
Search for a given element in the list using the "binary search" algorithm, which requires a comparator to establish the sort order of the elements.- Type Parameters:
T
- Type of the list elements.- Parameters:
arrayList
- The list to search.item
- The item to search for in the list.comparator
- Comparator to use for testing; ifnull
then the "natural" ordering of the objects is used (see the caveats ofArrays.binarySearch(Object[], Object)
).- Returns:
- The index of the item in the list if found, or -1 if the item cannot be found in the list.
-
binarySearch
public static <T extends java.lang.Comparable<? super T>> int binarySearch(ArrayList<T> arrayList, T item)
Search for an item in the given list using the elements' "natural" ordering.- Type Parameters:
T
- The comparable type of the elements in the list.- Parameters:
arrayList
- The list to search.item
- The item to search for.- Returns:
- The index of the item in the list if found, or -1 if the item is not found.
-
-