Class ImmutableLongArray
- All Implemented Interfaces:
Serializable
long
values, with an API resembling List
.
Advantages compared to long[]
:
- All the many well-known advantages of immutability (read Effective Java, third edition, Item 17).
- Has the value-based (not identity-based)
equals(java.lang.Object)
,hashCode()
, andtoString()
behavior you expect. - Offers useful operations beyond just
get
andlength
, so you don't have to hunt through classes likeArrays
andLongs
for them. - Supports a copy-free
subArray(int, int)
view, so methods that accept this type don't need to add overloads that accept start and end indexes. - Can be streamed without "breaking the chain":
foo.getBarLongs().stream()...
. - Access to all collection-based utilities via
asList()
(though at the cost of allocating garbage).
Disadvantages compared to long[]
:
- Memory footprint has a fixed overhead (about 24 bytes per instance).
- Some construction use cases force the data to be copied (though several construction APIs are offered that don't).
- Can't be passed directly to methods that expect
long[]
(though the most common utilities do have replacements here). - Dependency on
com.google.common
/ Guava.
Advantages compared to ImmutableList
<Long>
:
- Improved memory compactness and locality.
- Can be queried without allocating garbage.
- Access to
LongStream
features (likeLongStream.sum()
) usingstream()
instead of the awkwardstream().mapToLong(v -> v)
.
Disadvantages compared to ImmutableList<Long>
:
- Can't be passed directly to methods that expect
Iterable
,Collection
, orList
(though the most common utilities do have replacements here, and there is a lazyasList()
view).
- Since:
- 22.0
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
A builder forImmutableLongArray
instances; obtained usingbuilder(int)
. -
Method Summary
Modifier and TypeMethodDescriptionasList()
Returns an immutable view of this array's values as aList
; note thatlong
values are boxed intoLong
instances on demand, which can be very expensive.static ImmutableLongArray.Builder
builder()
Returns a new, empty builder forImmutableLongArray
instances, with a default initial capacity.static ImmutableLongArray.Builder
builder
(int initialCapacity) Returns a new, empty builder forImmutableLongArray
instances, sized to hold up toinitialCapacity
values without resizing.boolean
contains
(long target) Returnstrue
iftarget
is present at any index in this array.static ImmutableLongArray
copyOf
(long[] values) Returns an immutable array containing the given values, in order.static ImmutableLongArray
Returns an immutable array containing the given values, in order.static ImmutableLongArray
copyOf
(Collection<Long> values) Returns an immutable array containing the given values, in order.static ImmutableLongArray
copyOf
(LongStream stream) Returns an immutable array containing all the values fromstream
, in order.boolean
Returnstrue
ifobject
is anImmutableLongArray
containing the same values as this one, in the same order.void
forEach
(LongConsumer consumer) Invokesconsumer
for each value contained in this array, in order.long
get
(int index) Returns thelong
value present at the given index.int
hashCode()
Returns an unspecified hash code for the contents of this immutable array.int
indexOf
(long target) boolean
isEmpty()
Returnstrue
if there are no values in this array (length()
is zero).int
lastIndexOf
(long target) int
length()
Returns the number of values in this array.static ImmutableLongArray
of()
Returns the empty array.static ImmutableLongArray
of
(long e0) Returns an immutable array containing a single value.static ImmutableLongArray
of
(long e0, long e1) Returns an immutable array containing the given values, in order.static ImmutableLongArray
of
(long first, long... rest) Returns an immutable array containing the given values, in order.static ImmutableLongArray
of
(long e0, long e1, long e2) Returns an immutable array containing the given values, in order.static ImmutableLongArray
of
(long e0, long e1, long e2, long e3) Returns an immutable array containing the given values, in order.static ImmutableLongArray
of
(long e0, long e1, long e2, long e3, long e4) Returns an immutable array containing the given values, in order.static ImmutableLongArray
of
(long e0, long e1, long e2, long e3, long e4, long e5) Returns an immutable array containing the given values, in order.stream()
Returns a stream over the values in this array, in order.subArray
(int startIndex, int endIndex) Returns a new immutable array containing the values in the specified range.long[]
toArray()
Returns a new, mutable copy of this array's values, as a primitivelong[]
.toString()
Returns a string representation of this array in the same form asArrays.toString(long[])
, for example"[1, 2, 3]"
.trimmed()
Returns an immutable array containing the same values asthis
array.
-
Method Details
-
of
Returns the empty array. -
of
Returns an immutable array containing a single value. -
of
Returns an immutable array containing the given values, in order. -
of
Returns an immutable array containing the given values, in order. -
of
Returns an immutable array containing the given values, in order. -
of
Returns an immutable array containing the given values, in order. -
of
Returns an immutable array containing the given values, in order. -
of
Returns an immutable array containing the given values, in order.The array
rest
must not be longer thanInteger.MAX_VALUE - 1
. -
copyOf
Returns an immutable array containing the given values, in order. -
copyOf
Returns an immutable array containing the given values, in order. -
copyOf
Returns an immutable array containing the given values, in order.Performance note: this method delegates to
copyOf(Collection)
ifvalues
is aCollection
. Otherwise it creates abuilder(int)
and usesImmutableLongArray.Builder.addAll(Iterable)
, with all the performance implications associated with that. -
copyOf
Returns an immutable array containing all the values fromstream
, in order.- Since:
- 22.0 (but only since 33.4.0 in the Android flavor)
-
builder
Returns a new, empty builder forImmutableLongArray
instances, sized to hold up toinitialCapacity
values without resizing. The returned builder is not thread-safe.Performance note: When feasible,
initialCapacity
should be the exact number of values that will be added, if that knowledge is readily available. It is better to guess a value slightly too high than slightly too low. If the value is not exact, theImmutableLongArray
that is built will very likely occupy more memory than strictly necessary; to trim memory usage, build usingbuilder.build().trimmed()
. -
builder
Returns a new, empty builder forImmutableLongArray
instances, with a default initial capacity. The returned builder is not thread-safe.Performance note: The
ImmutableLongArray
that is built will very likely occupy more memory than necessary; to trim memory usage, build usingbuilder.build().trimmed()
. -
length
Returns the number of values in this array. -
isEmpty
-
get
Returns thelong
value present at the given index.- Throws:
IndexOutOfBoundsException
- ifindex
is negative, or greater than or equal tolength()
-
indexOf
-
lastIndexOf
Returns the largest index for whichget(int)
returnstarget
, or-1
if no such index exists. Equivalent toasList().lastIndexOf(target)
. -
contains
Returnstrue
iftarget
is present at any index in this array. Equivalent toasList().contains(target)
. -
forEach
Invokesconsumer
for each value contained in this array, in order.- Since:
- 22.0 (but only since 33.4.0 in the Android flavor)
-
stream
Returns a stream over the values in this array, in order.- Since:
- 22.0 (but only since 33.4.0 in the Android flavor)
-
toArray
Returns a new, mutable copy of this array's values, as a primitivelong[]
. -
subArray
Returns a new immutable array containing the values in the specified range.Performance note: The returned array has the same full memory footprint as this one does (no actual copying is performed). To reduce memory usage, use
subArray(start, end).trimmed()
. -
asList
Returns an immutable view of this array's values as aList
; note thatlong
values are boxed intoLong
instances on demand, which can be very expensive. The returned list should be used once and discarded. For any usages beyond that, pass the returned list toImmutableList.copyOf
and use that list instead. -
equals
-
hashCode
-
toString
Returns a string representation of this array in the same form asArrays.toString(long[])
, for example"[1, 2, 3]"
. -
trimmed
Returns an immutable array containing the same values asthis
array. This is logically a no-op, and in some circumstancesthis
itself is returned. However, if this instance is asubArray(int, int)
view of a larger array, this method will copy only the appropriate range of values, resulting in an equivalent array with a smaller memory footprint.
-