public class SnapshotArray<T> extends Array<T>
begin()
between indexes
0 and Array.size
at the time begin was called will not be modified until end()
is called. If modification of the
SnapshotArray occurs between begin/end, the backing array is copied prior to the modification, ensuring that the backing array
that was returned by begin()
is unaffected. To avoid allocation, an attempt is made to reuse any extra array created
as a result of this copy on subsequent copies.
Note that SnapshotArray is not for thread safety, only for modification during iteration.
It is suggested iteration be done in this specific way:
SnapshotArray- array = new SnapshotArray(); // ... Object[] items = array.begin(); for (int i = 0, n = array.size; i < n; i++) { Item item = (Item)items[i]; // ... } array.end();
Array.ArrayIterable<T>, Array.ArrayIterator<T>
Constructor and Description |
---|
SnapshotArray() |
SnapshotArray(Array array) |
SnapshotArray(boolean ordered,
int capacity) |
SnapshotArray(boolean ordered,
int capacity,
Class arrayType) |
SnapshotArray(boolean ordered,
T[] array,
int startIndex,
int count) |
SnapshotArray(Class arrayType) |
SnapshotArray(int capacity) |
SnapshotArray(T[] array) |
Modifier and Type | Method and Description |
---|---|
T[] |
begin()
Returns the backing array, which is guaranteed to not be modified before
end() . |
void |
clear() |
void |
end()
Releases the guarantee that the array returned by
begin() won't be modified. |
void |
insert(int index,
T value) |
T |
pop()
Removes and returns the last item.
|
boolean |
removeAll(Array<? extends T> array,
boolean identity)
Removes from this array all of elements contained in the specified array.
|
T |
removeIndex(int index)
Removes and returns the item at the specified index.
|
void |
removeRange(int start,
int end)
Removes the items between the specified indices, inclusive.
|
boolean |
removeValue(T value,
boolean identity)
Removes the first instance of the specified value in the array.
|
void |
reverse() |
void |
set(int index,
T value) |
T[] |
setSize(int newSize)
Sets the array size, leaving any values beyond the current size null.
|
void |
shuffle() |
void |
sort()
Sorts this array.
|
void |
sort(Comparator<? super T> comparator)
Sorts the array.
|
void |
swap(int first,
int second) |
void |
truncate(int newSize)
Reduces the size of the array to the specified size.
|
static <T> SnapshotArray<T> |
with(T... array) |
add, add, add, add, addAll, addAll, addAll, addAll, contains, containsAll, containsAny, ensureCapacity, equals, equalsIdentity, first, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, notEmpty, of, of, peek, random, select, selectRanked, selectRankedIndex, shrink, toArray, toArray, toString, toString
forEach, spliterator
public SnapshotArray()
public SnapshotArray(Array array)
public SnapshotArray(boolean ordered, int capacity, Class arrayType)
public SnapshotArray(boolean ordered, int capacity)
public SnapshotArray(boolean ordered, T[] array, int startIndex, int count)
public SnapshotArray(Class arrayType)
public SnapshotArray(int capacity)
public SnapshotArray(T[] array)
public T[] begin()
end()
.public void end()
begin()
won't be modified.public boolean removeValue(T value, boolean identity)
Array
removeValue
in class Array<T>
value
- May be null.identity
- If true, == comparison will be used. If false, .equals() comparison will be used.public T removeIndex(int index)
Array
removeIndex
in class Array<T>
public void removeRange(int start, int end)
Array
removeRange
in class Array<T>
public boolean removeAll(Array<? extends T> array, boolean identity)
Array
public void sort()
Array
Comparable
. This method is not thread safe (uses
Sort.instance()
).public void sort(Comparator<? super T> comparator)
Array
Sort.instance()
).public void truncate(int newSize)
Array
public T[] setSize(int newSize)
Array
setSize
in class Array<T>
Array.items
public static <T> SnapshotArray<T> with(T... array)
SnapshotArray(Object[])
Copyright © 2020. All rights reserved.