Class ImmutableDoubleArray
- All Implemented Interfaces:
- Serializable
double values, with an API resembling List.
 Advantages compared to double[]:
 
- 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 getandlength, so you don't have to hunt through classes likeArraysandDoublesfor 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.getBarDoubles().stream()....
- Access to all collection-based utilities via asList()(though at the cost of allocating garbage).
Disadvantages compared to double[]:
 
- 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 double[](though the most common utilities do have replacements here).
- Dependency on com.google.common/ Guava.
Advantages compared to ImmutableList
 <Double>:
 
- Improved memory compactness and locality.
- Can be queried without allocating garbage.
- Access to DoubleStreamfeatures (likeDoubleStream.sum()) usingstream()instead of the awkwardstream().mapToDouble(v -> v).
Disadvantages compared to ImmutableList<Double>:
 
- 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 SummaryNested ClassesModifier and TypeClassDescriptionstatic final classA builder forImmutableDoubleArrayinstances; obtained usingbuilder(int).
- 
Method SummaryModifier and TypeMethodDescriptionasList()Returns an immutable view of this array's values as aList; note thatdoublevalues are boxed intoDoubleinstances on demand, which can be very expensive.static ImmutableDoubleArray.Builderbuilder()Returns a new, empty builder forImmutableDoubleArrayinstances, with a default initial capacity.static ImmutableDoubleArray.Builderbuilder(int initialCapacity) Returns a new, empty builder forImmutableDoubleArrayinstances, sized to hold up toinitialCapacityvalues without resizing.booleancontains(double target) Returnstrueiftargetis present at any index in this array.static ImmutableDoubleArraycopyOf(double[] values) Returns an immutable array containing the given values, in order.static ImmutableDoubleArrayReturns an immutable array containing the given values, in order.static ImmutableDoubleArraycopyOf(Collection<Double> values) Returns an immutable array containing the given values, in order.static ImmutableDoubleArraycopyOf(DoubleStream stream) Returns an immutable array containing all the values fromstream, in order.booleanReturnstrueifobjectis anImmutableDoubleArraycontaining the same values as this one, in the same order.voidforEach(DoubleConsumer consumer) Invokesconsumerfor each value contained in this array, in order.doubleget(int index) Returns thedoublevalue present at the given index.inthashCode()Returns an unspecified hash code for the contents of this immutable array.intindexOf(double target) booleanisEmpty()Returnstrueif there are no values in this array (length()is zero).intlastIndexOf(double target) intlength()Returns the number of values in this array.static ImmutableDoubleArrayof()Returns the empty array.static ImmutableDoubleArrayof(double e0) Returns an immutable array containing a single value.static ImmutableDoubleArrayof(double e0, double e1) Returns an immutable array containing the given values, in order.static ImmutableDoubleArrayof(double first, double... rest) Returns an immutable array containing the given values, in order.static ImmutableDoubleArrayof(double e0, double e1, double e2) Returns an immutable array containing the given values, in order.static ImmutableDoubleArrayof(double e0, double e1, double e2, double e3) Returns an immutable array containing the given values, in order.static ImmutableDoubleArrayof(double e0, double e1, double e2, double e3, double e4) Returns an immutable array containing the given values, in order.static ImmutableDoubleArrayof(double e0, double e1, double e2, double e3, double e4, double 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.double[]toArray()Returns a new, mutable copy of this array's values, as a primitivedouble[].toString()Returns a string representation of this array in the same form asArrays.toString(double[]), for example"[1, 2, 3]".trimmed()Returns an immutable array containing the same values asthisarray.
- 
Method Details- 
ofReturns the empty array.
- 
ofReturns an immutable array containing a single value.
- 
ofReturns an immutable array containing the given values, in order.
- 
ofReturns an immutable array containing the given values, in order.
- 
ofReturns an immutable array containing the given values, in order.
- 
ofReturns an immutable array containing the given values, in order.
- 
ofpublic static ImmutableDoubleArray of(double e0, double e1, double e2, double e3, double e4, double e5) Returns an immutable array containing the given values, in order.
- 
ofReturns an immutable array containing the given values, in order.The array restmust not be longer thanInteger.MAX_VALUE - 1.
- 
copyOfReturns an immutable array containing the given values, in order.
- 
copyOfReturns an immutable array containing the given values, in order.
- 
copyOfReturns an immutable array containing the given values, in order.Performance note: this method delegates to copyOf(Collection)ifvaluesis aCollection. Otherwise it creates abuilder(int)and usesImmutableDoubleArray.Builder.addAll(Iterable), with all the performance implications associated with that.
- 
copyOfReturns an immutable array containing all the values fromstream, in order.- Since:
- 33.4.0 (but since 22.0 in the JRE flavor)
 
- 
builderReturns a new, empty builder forImmutableDoubleArrayinstances, sized to hold up toinitialCapacityvalues without resizing. The returned builder is not thread-safe.Performance note: When feasible, initialCapacityshould 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, theImmutableDoubleArraythat is built will very likely occupy more memory than strictly necessary; to trim memory usage, build usingbuilder.build().trimmed().
- 
builderReturns a new, empty builder forImmutableDoubleArrayinstances, with a default initial capacity. The returned builder is not thread-safe.Performance note: The ImmutableDoubleArraythat is built will very likely occupy more memory than necessary; to trim memory usage, build usingbuilder.build().trimmed().
- 
lengthpublic int length()Returns the number of values in this array.
- 
isEmptypublic boolean isEmpty()Returnstrueif there are no values in this array (length()is zero).
- 
getpublic double get(int index) Returns thedoublevalue present at the given index.- Throws:
- IndexOutOfBoundsException- if- indexis negative, or greater than or equal to- length()
 
- 
indexOfpublic int indexOf(double target) Returns the smallest index for whichget(int)returnstarget, or-1if no such index exists. Values are compared as if byDouble.equals(java.lang.Object). Equivalent toasList().indexOf(target).
- 
lastIndexOfpublic int lastIndexOf(double target) Returns the largest index for whichget(int)returnstarget, or-1if no such index exists. Values are compared as if byDouble.equals(java.lang.Object). Equivalent toasList().lastIndexOf(target).
- 
containspublic boolean contains(double target) Returnstrueiftargetis present at any index in this array. Values are compared as if byDouble.equals(java.lang.Object). Equivalent toasList().contains(target).
- 
forEachInvokesconsumerfor each value contained in this array, in order.- Since:
- 33.4.0 (but since 22.0 in the JRE flavor)
 
- 
streamReturns a stream over the values in this array, in order.- Since:
- 33.4.0 (but since 22.0 in the JRE flavor)
 
- 
toArraypublic double[] toArray()Returns a new, mutable copy of this array's values, as a primitivedouble[].
- 
subArrayReturns 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().
- 
asListReturns an immutable view of this array's values as aList; note thatdoublevalues are boxed intoDoubleinstances 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.copyOfand use that list instead.
- 
equalsReturnstrueifobjectis anImmutableDoubleArraycontaining the same values as this one, in the same order. Values are compared as if byDouble.equals(java.lang.Object).
- 
hashCode
- 
toStringReturns a string representation of this array in the same form asArrays.toString(double[]), for example"[1, 2, 3]".
- 
trimmedReturns an immutable array containing the same values asthisarray. This is logically a no-op, and in some circumstancesthisitself 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.
 
-