public final class ObjectBigArrays extends Object
Since version 8.4.0, many methods previously in this class(e.g., length()) have
been deprecated in favor of those in BigArrays, which can be imported statically.
Note that BinIO and TextIO
contain several methods make it possible to load and save big arrays of primitive types as sequences
of elements in DataInput format (i.e., not as objects) or as sequences of lines of text.
Warning: creating arrays
using reflection, as it
happens in ensureCapacity(Object[][],long,long) and grow(Object[][],long,long),
is significantly slower than using new. This phenomenon is particularly
evident in the first growth phases of an array reallocated with doubling (or similar) logic.
BigArrays| Modifier and Type | Field and Description |
|---|---|
static Object[][] |
DEFAULT_EMPTY_BIG_ARRAY
A static, final, empty big array to be used as default big array in allocations.
|
static Object[][] |
EMPTY_BIG_ARRAY
A static, final, empty big array.
|
static Hash.Strategy |
HASH_STRATEGY
A type-specific content-based hash strategy for big arrays.
|
| Modifier and Type | Method and Description |
|---|---|
static <K> long |
binarySearch(K[][] a,
K key,
Comparator<K> c)
Searches a big array for the specified value using
the binary search algorithm and a specified comparator.
|
static <K> long |
binarySearch(K[][] a,
long from,
long to,
K key)
Searches a range of the specified big array for the specified value using
the binary search algorithm.
|
static <K> long |
binarySearch(K[][] a,
long from,
long to,
K key,
Comparator<K> c)
Searches a range of the specified big array for the specified value using
the binary search algorithm and a specified comparator.
|
static <K> long |
binarySearch(K[][] a,
Object key)
Searches a big array for the specified value using
the binary search algorithm.
|
static <K> K[][] |
copy(K[][] array)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
copy(K[][] srcArray,
long srcPos,
K[][] destArray,
long destPos,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
copy(K[][] array,
long offset,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
copyFromBig(K[][] srcArray,
long srcPos,
K[] destArray,
int destPos,
int length)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
copyToBig(K[] srcArray,
int srcPos,
K[][] destArray,
long destPos,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
ensureCapacity(K[][] array,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
ensureCapacity(K[][] array,
long length,
long preserve)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
ensureFromTo(K[][] a,
long from,
long to)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
ensureOffsetLength(K[][] a,
long offset,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
ensureSameLength(K[][] a,
K[][] b)
Deprecated.
Please use the version in
BigArrays. |
static <K> boolean |
equals(K[][] a1,
K[][] a2)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
fill(K[][] array,
K value)
Deprecated.
Please use the version in
BigArrays. |
static <K> void |
fill(K[][] array,
long from,
long to,
K value)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
forceCapacity(K[][] array,
long length,
long preserve)
Deprecated.
Please use the version in
BigArrays. |
static <K> K |
get(K[][] array,
long index)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
grow(K[][] array,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
grow(K[][] array,
long length,
long preserve)
Deprecated.
Please use the version in
BigArrays. |
static <K> long |
length(K[][] array)
Deprecated.
Please use the version in
BigArrays. |
static Object[][] |
newBigArray(Class<?> componentType,
long length)
Creates a new big array using a given component type.
|
static <K> K[][] |
newBigArray(K[][] prototype,
long length)
Creates a new big array using the given one as prototype.
|
static Object[][] |
newBigArray(long length)
Creates a new big array.
|
static <K> void |
quickSort(K[][] x)
Sorts the specified big array according to the natural ascending order using quicksort.
|
static <K> void |
quickSort(K[][] x,
Comparator<K> comp)
Sorts the specified big array according to the order induced by the specified
comparator using quicksort.
|
static <K> void |
quickSort(K[][] x,
long from,
long to)
Sorts the specified range of elements according to the natural ascending order using quicksort.
|
static <K> void |
quickSort(K[][] x,
long from,
long to,
Comparator<K> comp)
Sorts the specified range of elements according to the order induced by the specified
comparator using quicksort.
|
static <K> void |
set(K[][] array,
long index,
K value)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
setLength(K[][] array,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
shuffle(K[][] a,
long from,
long to,
Random random)
Shuffles the specified big array fragment using the specified pseudorandom number generator.
|
static <K> K[][] |
shuffle(K[][] a,
Random random)
Shuffles the specified big array using the specified pseudorandom number generator.
|
static <K> void |
swap(K[][] array,
long first,
long second)
Deprecated.
Please use the version in
BigArrays. |
static <K> String |
toString(K[][] a)
Deprecated.
|
static <K> K[][] |
trim(K[][] array,
long length)
Deprecated.
Please use the version in
BigArrays. |
static <K> K[][] |
wrap(K[] array)
Deprecated.
Please use the version in
BigArrays. |
public static final Object[][] EMPTY_BIG_ARRAY
public static final Object[][] DEFAULT_EMPTY_BIG_ARRAY
EMPTY_BIG_ARRAY makes it possible to have different
behaviors depending on whether the user required an empty allocation, or we are
just lazily delaying allocation.ArrayListpublic static final Hash.Strategy HASH_STRATEGY
This hash strategy may be used in custom hash collections whenever keys are
big arrays, and they must be considered equal by content. This strategy
will handle null correctly, and it is serializable.
@Deprecated public static <K> K get(K[][] array, long index)
BigArrays.array - a big array.index - a position in the big array.@Deprecated public static <K> void set(K[][] array, long index, K value)
BigArrays.array - a big array.index - a position in the big array.value - the new value for the array element at the specified position.@Deprecated public static <K> void swap(K[][] array, long first, long second)
BigArrays.array - a big array.first - a position in the big array.second - a position in the big array.@Deprecated public static <K> long length(K[][] array)
BigArrays.array - a big array.@Deprecated public static <K> void copy(K[][] srcArray, long srcPos, K[][] destArray, long destPos, long length)
BigArrays.srcArray - the source big array.srcPos - the starting position in the source big array.destArray - the destination big array.destPos - the starting position in the destination data.length - the number of elements to be copied.@Deprecated public static <K> void copyFromBig(K[][] srcArray, long srcPos, K[] destArray, int destPos, int length)
BigArrays.srcArray - the source big array.srcPos - the starting position in the source big array.destArray - the destination array.destPos - the starting position in the destination data.length - the number of elements to be copied.@Deprecated public static <K> void copyToBig(K[] srcArray, int srcPos, K[][] destArray, long destPos, long length)
BigArrays.srcArray - the source array.srcPos - the starting position in the source array.destArray - the destination big array.destPos - the starting position in the destination data.length - the number of elements to be copied.public static <K> K[][] newBigArray(K[][] prototype,
long length)
This method returns a new big array of the given length whose element
are of the same class as of those of prototype. In case
of an empty big array, it tries to return EMPTY_BIG_ARRAY, if possible.
prototype - a big array that will be used to type the new one.length - the length of the new big array.public static Object[][] newBigArray(Class<?> componentType, long length)
This method returns a new big array whose segments
are of class componentType. In case
of an empty big array, it tries to return EMPTY_BIG_ARRAY, if possible.
componentType - a class representing the type of segments of the array to be created.length - the length of the new big array.public static Object[][] newBigArray(long length)
length - the length of the new big array.@Deprecated public static <K> K[][] wrap(K[] array)
BigArrays.Note that the returned big array might contain as a segment the original array.
array - an array.array.@Deprecated public static <K> K[][] ensureCapacity(K[][] array, long length)
BigArrays.If you cannot foresee whether this big array will need again to be
enlarged, you should probably use grow() instead.
Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new minimum length for this big array.array, if it contains length entries or more; otherwise,
a big array with length entries whose first length(array)
entries are the same as those of array.@Deprecated public static <K> K[][] forceCapacity(K[][] array, long length, long preserve)
BigArrays.This method returns a new big array of the given length whose element
are of the same class as of those of array.
Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new minimum length for this big array.preserve - the number of elements of the big array that must be preserved in case a new allocation is necessary.length entries whose first preserve
entries are the same as those of array.@Deprecated public static <K> K[][] ensureCapacity(K[][] array, long length, long preserve)
BigArrays.This method returns a new big array of the given length whose element
are of the same class as of those of array.
Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new minimum length for this big array.preserve - the number of elements of the big array that must be preserved in case a new allocation is necessary.array, if it can contain length entries or more; otherwise,
a big array with length entries whose first preserve
entries are the same as those of array.@Deprecated public static <K> K[][] grow(K[][] array, long length)
BigArrays.If you want complete control on the big array growth, you
should probably use ensureCapacity() instead.
Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new minimum length for this big array.array, if it can contain length
entries; otherwise, a big array with
max(length,length(array)/φ) entries whose first
length(array) entries are the same as those of array.@Deprecated public static <K> K[][] grow(K[][] array, long length, long preserve)
BigArrays.If you want complete control on the big array growth, you
should probably use ensureCapacity() instead.
Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new minimum length for this big array.preserve - the number of elements of the big array that must be preserved in case a new allocation is necessary.array, if it can contain length
entries; otherwise, a big array with
max(length,length(array)/φ) entries whose first
preserve entries are the same as those of array.@Deprecated public static <K> K[][] trim(K[][] array, long length)
BigArrays.Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new maximum length for the big array.array, if it contains length
entries or less; otherwise, a big array with
length entries whose entries are the same as
the first length entries of array.@Deprecated public static <K> K[][] setLength(K[][] array, long length)
BigArrays.Warning: the returned array might use part of the segments of the original array, which must be considered read-only after calling this method.
array - a big array.length - the new length for the big array.array, if it contains exactly length
entries; otherwise, if it contains more than
length entries, a big array with length entries
whose entries are the same as the first length entries of
array; otherwise, a big array with length entries
whose first length(array) entries are the same as those of
array.@Deprecated public static <K> K[][] copy(K[][] array, long offset, long length)
BigArrays.array - a big array.offset - the first element to copy.length - the number of elements to copy.length elements of array starting at offset.@Deprecated public static <K> K[][] copy(K[][] array)
BigArrays.array - a big array.array.@Deprecated public static <K> void fill(K[][] array, K value)
BigArrays.This method uses a backward loop. It is significantly faster than the corresponding
method in Arrays.
array - a big array.value - the new value for all elements of the big array.@Deprecated public static <K> void fill(K[][] array, long from, long to, K value)
BigArrays.If possible (i.e., from is 0) this method uses a
backward loop. In this case, it is significantly faster than the
corresponding method in Arrays.
array - a big array.from - the starting index of the portion to fill.to - the end index of the portion to fill.value - the new value for all elements of the specified portion of the big array.@Deprecated public static <K> boolean equals(K[][] a1, K[][] a2)
BigArrays.This method uses a backward loop. It is significantly faster than the corresponding
method in Arrays.
a1 - a big array.a2 - another big array.@Deprecated public static <K> String toString(K[][] a)
@Deprecated public static <K> void ensureFromTo(K[][] a, long from, long to)
BigArrays.This method may be used whenever a big array range check is needed.
a - a big array.from - a start index (inclusive).to - an end index (inclusive).IllegalArgumentException - if from is greater than to.ArrayIndexOutOfBoundsException - if from or to are greater than the big array length or negative.@Deprecated public static <K> void ensureOffsetLength(K[][] a, long offset, long length)
BigArrays.This method may be used whenever a big array range check is needed.
a - a big array.offset - a start index.length - a length (the number of elements in the range).IllegalArgumentException - if length is negative.ArrayIndexOutOfBoundsException - if offset is negative or offset+length is greater than the big array length.@Deprecated public static <K> void ensureSameLength(K[][] a, K[][] b)
BigArrays.a - a big array.b - another big array.IllegalArgumentException - if the two argument arrays are not of the same length.public static <K> void quickSort(K[][] x,
long from,
long to,
Comparator<K> comp)
The sorting algorithm is a tuned quicksort adapted from Jon L. Bentley and M. Douglas McIlroy, “Engineering a Sort Function”, Software: Practice and Experience, 23(11), pages 1249−1265, 1993.
x - the big array to be sorted.from - the index of the first element (inclusive) to be sorted.to - the index of the last element (exclusive) to be sorted.comp - the comparator to determine the sorting order.public static <K> void quickSort(K[][] x,
Comparator<K> comp)
The sorting algorithm is a tuned quicksort adapted from Jon L. Bentley and M. Douglas McIlroy, “Engineering a Sort Function”, Software: Practice and Experience, 23(11), pages 1249−1265, 1993.
x - the big array to be sorted.comp - the comparator to determine the sorting order.public static <K> void quickSort(K[][] x,
long from,
long to)
The sorting algorithm is a tuned quicksort adapted from Jon L. Bentley and M. Douglas McIlroy, “Engineering a Sort Function”, Software: Practice and Experience, 23(11), pages 1249−1265, 1993.
x - the big array to be sorted.from - the index of the first element (inclusive) to be sorted.to - the index of the last element (exclusive) to be sorted.public static <K> void quickSort(K[][] x)
The sorting algorithm is a tuned quicksort adapted from Jon L. Bentley and M. Douglas McIlroy, “Engineering a Sort Function”, Software: Practice and Experience, 23(11), pages 1249−1265, 1993.
x - the big array to be sorted.public static <K> long binarySearch(K[][] a,
long from,
long to,
K key)
a - the big array to be searched.from - the index of the first element (inclusive) to be searched.to - the index of the last element (exclusive) to be searched.key - the value to be searched for.(-(insertion point) - 1). The insertion
point is defined as the the point at which the value would
be inserted into the big array: the index of the first
element greater than the key, or the length of the big array, if all
elements in the big array are less than the specified key. Note
that this guarantees that the return value will be >= 0 if
and only if the key is found.Arrayspublic static <K> long binarySearch(K[][] a,
Object key)
a - the big array to be searched.key - the value to be searched for.(-(insertion point) - 1). The insertion
point is defined as the the point at which the value would
be inserted into the big array: the index of the first
element greater than the key, or the length of the big array, if all
elements in the big array are less than the specified key. Note
that this guarantees that the return value will be >= 0 if
and only if the key is found.Arrayspublic static <K> long binarySearch(K[][] a,
long from,
long to,
K key,
Comparator<K> c)
a - the big array to be searched.from - the index of the first element (inclusive) to be searched.to - the index of the last element (exclusive) to be searched.key - the value to be searched for.c - a comparator.(-(insertion point) - 1). The insertion
point is defined as the the point at which the value would
be inserted into the big array: the index of the first
element greater than the key, or the length of the big array, if all
elements in the big array are less than the specified key. Note
that this guarantees that the return value will be >= 0 if
and only if the key is found.Arrayspublic static <K> long binarySearch(K[][] a,
K key,
Comparator<K> c)
a - the big array to be searched.key - the value to be searched for.c - a comparator.(-(insertion point) - 1). The insertion
point is defined as the the point at which the value would
be inserted into the big array: the index of the first
element greater than the key, or the length of the big array, if all
elements in the big array are less than the specified key. Note
that this guarantees that the return value will be >= 0 if
and only if the key is found.Arrayspublic static <K> K[][] shuffle(K[][] a,
long from,
long to,
Random random)
a - the big array to be shuffled.from - the index of the first element (inclusive) to be shuffled.to - the index of the last element (exclusive) to be shuffled.random - a pseudorandom number generator.a.public static <K> K[][] shuffle(K[][] a,
Random random)
a - the big array to be shuffled.random - a pseudorandom number generator.a.Copyright © 2020. All rights reserved.