Top Description Inners Fields Constructors Methods
tech.units.indriya.function

public final Class MixedRadix<Q extends Quantity<Q>>

extends Object
Class Inheritance
Imports
java.util.ArrayList, .Arrays, .Collection, .Collections, .List, .Objects, javax.measure.MeasurementException, .Quantity, .Quantity.Scale, .Unit, .UnitConverter, tech.units.indriya.internal.function.Calculator, tech.units.indriya.internal.function.radix.MixedRadixSupport, .Radix, tech.units.indriya.quantity.MixedQuantity, .Quantities

Immutable class that represents mixed-radix units (like "hour:min:sec" or "ft, in")
Authors
Andi Huber, Werner Keil
Since
2.0
Version
2.4, September 30, 2024
See Also
Wikipedia: Mixed radix, Wolfram Language & System: MixedUnit, Wikipedia: Metrication, MixedQuantity

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
private static class
private static interface

Field Summary

Modifier and TypeField and Description
private final MixedRadixSupport
private final List<Unit<Q>>
private final MixedRadix.PrimaryUnitPickState
public static MixedRadix.PrimaryUnitPick
public static final MixedRadix.PrimaryUnitPick
private final Unit<Q>

Constructor Summary

AccessConstructor and Description
private
MixedRadix(MixedRadix.PrimaryUnitPickState pickState, final List<Unit<Q>> mixedRadixUnits)

Method Summary

Modifier and TypeMethod and Description
private MixedRadix<Q>
append(MixedRadix.PrimaryUnitPickState state, Unit<Q> mixedRadixUnit)

private void
public MixedQuantity<Q>
createMixedQuantity(final Number[]
- numbers corresponding to the radix coefficients in most significant first order, allowed to be of shorter length than the total count of radix coefficients of this MixedRadix instance
values
,
final Quantity.Scale
- the Scale to be used for the elements of the returned MixedQuantity
scale
)

Creates a MixedQuantity from given values and scale.

public MixedQuantity<Q>
public Quantity<Q>
createQuantity(final Number[]
- numbers corresponding to the radices in most significant first order, allowed to be of shorter length than the total count of radices of this MixedRadix instance
values
,
final Quantity.Scale
- the Scale to be used for the returned Quantity
scale
)

Creates a Quantity from given values and scale.

public Quantity<Q>
public Number[]
extractValues(Quantity<Q> quantity)

public Number[]
extractValuesInto(Quantity<Q> quantity, Number[] target)

public Unit<Q>
private Unit<Q>
private int
public List<Unit<Q>>
private void
public MixedRadix<Q>
mix(Unit<Q> mixedRadixUnit)

pack-priv MixedRadix<Q>
mixPrimary(Unit<Q> mixedRadixUnit)

public static <X extends Quantity<X>> MixedRadix<X>
of(Unit<X> leadingUnit)

public static <X extends Quantity<X>> MixedRadix<X>
of(Unit<X>... units)

public static <X extends Quantity<X>> MixedRadix<X>
of(Collection<Unit<X>> units)

public static <X extends Quantity<X>> MixedRadix<X>
ofPrimary(Unit<X> primaryUnit)

private Radix
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

pack-priv void
visitQuantity(Quantity<Q> quantity, int maxPartsToVisit, MixedRadix.Visitor<Q> partVisitor)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

mixedRadixSupportback to summary
private final MixedRadixSupport mixedRadixSupport
mixedRadixUnitsback to summary
private final List<Unit<Q>> mixedRadixUnits
pickStateback to summary
private final MixedRadix.PrimaryUnitPickState pickState
PRIMARY_UNIT_PICKback to summary
public static MixedRadix.PrimaryUnitPick PRIMARY_UNIT_PICK
PRIMARY_UNIT_PICK_DEFAULTback to summary
public static final MixedRadix.PrimaryUnitPick PRIMARY_UNIT_PICK_DEFAULT
primaryUnitback to summary
private final Unit<Q> primaryUnit

Constructor Detail

MixedRadixback to summary
private MixedRadix(MixedRadix.PrimaryUnitPickState pickState, final List<Unit<Q>> mixedRadixUnits)

Method Detail

appendback to summary
private MixedRadix<Q> append(MixedRadix.PrimaryUnitPickState state, Unit<Q> mixedRadixUnit)
assertDecreasingOrderOfSignificanceAndLinearityback to summary
private void assertDecreasingOrderOfSignificanceAndLinearity(Unit<Q> tail, Unit<Q> appended)
createMixedQuantityback to summary
public MixedQuantity<Q> createMixedQuantity(final Number[] values, final Quantity.Scale scale)

Creates a MixedQuantity from given values and scale.

Note

Not every MixedQuantity can be represented by a MixedRadix. MixedRadix strictly requires its coefficients to be in decreasing order of significance, while a MixedQuantity in principle does not.

Parameters
values:Number[]

- numbers corresponding to the radix coefficients in most significant first order, allowed to be of shorter length than the total count of radix coefficients of this MixedRadix instance

scale:Quantity.Scale

- the Scale to be used for the elements of the returned MixedQuantity

createMixedQuantityback to summary
public MixedQuantity<Q> createMixedQuantity(Number... values)
createQuantityback to summary
public Quantity<Q> createQuantity(final Number[] values, final Quantity.Scale scale)

Creates a Quantity from given values and scale.

Parameters
values:Number[]

- numbers corresponding to the radices in most significant first order, allowed to be of shorter length than the total count of radices of this MixedRadix instance

scale:Quantity.Scale

- the Scale to be used for the returned Quantity

createQuantityback to summary
public Quantity<Q> createQuantity(Number... values)
extractValuesback to summary
public Number[] extractValues(Quantity<Q> quantity)
extractValuesIntoback to summary
public Number[] extractValuesInto(Quantity<Q> quantity, Number[] target)
getPrimaryUnitback to summary
public Unit<Q> getPrimaryUnit()
getTrailingUnitback to summary
private Unit<Q> getTrailingUnit()
getUnitCountback to summary
private int getUnitCount()
getUnitsback to summary
public List<Unit<Q>> getUnits()
guardAgainstIllegalNumbersArgumentback to summary
private void guardAgainstIllegalNumbersArgument(Number[] values)
mixback to summary
public MixedRadix<Q> mix(Unit<Q> mixedRadixUnit)
mixPrimaryback to summary
pack-priv MixedRadix<Q> mixPrimary(Unit<Q> mixedRadixUnit)
ofback to summary
public static <X extends Quantity<X>> MixedRadix<X> of(Unit<X> leadingUnit)
ofback to summary
public static <X extends Quantity<X>> MixedRadix<X> of(Unit<X>... units)
Annotations
@SafeVarargs
ofback to summary
public static <X extends Quantity<X>> MixedRadix<X> of(Collection<Unit<X>> units)
ofPrimaryback to summary
public static <X extends Quantity<X>> MixedRadix<X> ofPrimary(Unit<X> primaryUnit)
toRadixback to summary
private Radix toRadix(UnitConverter converter)
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
visitQuantityback to summary
pack-priv void visitQuantity(Quantity<Q> quantity, int maxPartsToVisit, MixedRadix.Visitor<Q> partVisitor)
tech.units.indriya.function back to summary

public final Enum MixedRadix.PrimaryUnitPick

extends Enum<MixedRadix.PrimaryUnitPick>
Class Inheritance

Field Summary

Modifier and TypeField and Description
public static final MixedRadix.PrimaryUnitPick
public static final MixedRadix.PrimaryUnitPick

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static MixedRadix.PrimaryUnitPick
public static MixedRadix.PrimaryUnitPick[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

LEADING_UNITback to summary
public static final MixedRadix.PrimaryUnitPick LEADING_UNIT
TRAILING_UNITback to summary
public static final MixedRadix.PrimaryUnitPick TRAILING_UNIT

Constructor Detail

PrimaryUnitPickback to summary
private PrimaryUnitPick()

Method Detail

valueOfback to summary
public static MixedRadix.PrimaryUnitPick valueOf(String name)
valuesback to summary
public static MixedRadix.PrimaryUnitPick[] values()
tech.units.indriya.function back to summary

private Class MixedRadix.PrimaryUnitPickState

extends Object
Class Inheritance

Field Summary

Modifier and TypeField and Description
private final boolean
private static final int
private final int
private static final int

Constructor Summary

AccessConstructor and Description
private
PrimaryUnitPickState(boolean explicitlyPicked, int pickedIndex)

Method Summary

Modifier and TypeMethod and Description
private void
private int
private static MixedRadix.PrimaryUnitPickState
private static MixedRadix.PrimaryUnitPickState
pickByExplicitIndex(int explicitIndex)

private static MixedRadix.PrimaryUnitPickState
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

explicitlyPickedback to summary
private final boolean explicitlyPicked
LEADING_IS_PRIMARY_UNITback to summary
private static final int LEADING_IS_PRIMARY_UNIT
pickedIndexback to summary
private final int pickedIndex
TRAILING_IS_PRIMARY_UNITback to summary
private static final int TRAILING_IS_PRIMARY_UNIT

Constructor Detail

PrimaryUnitPickStateback to summary
private PrimaryUnitPickState(boolean explicitlyPicked, int pickedIndex)

Method Detail

assertNotExplicitlyPickedback to summary
private void assertNotExplicitlyPicked()
nonNegativePrimaryUnitIndexback to summary
private int nonNegativePrimaryUnitIndex(int unitCount)
pickByConventionback to summary
private static MixedRadix.PrimaryUnitPickState pickByConvention()
pickByExplicitIndexback to summary
private static MixedRadix.PrimaryUnitPickState pickByExplicitIndex(int explicitIndex)
pickLeadingback to summary
private static MixedRadix.PrimaryUnitPickState pickLeading()
tech.units.indriya.function back to summary

private Interface MixedRadix.Visitor<Q extends Quantity<Q>>

Annotations
@FunctionalInterface

Method Summary

Modifier and TypeMethod and Description
public void
accept(int index, Unit<Q> unit, Number value)

Method Detail

acceptback to summary
public void accept(int index, Unit<Q> unit, Number value)