Java 类java.util.function.DoubleSupplier 实例源码
项目:memoization.java
文件:ConcurrentMapBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
@SuppressWarnings(CompilerWarnings.UNUSED)
public void shouldRequireNonNullCache() {
// given
final ConcurrentMap<String, Double> cache = null;
final Supplier<String> keySupplier = () -> "key";
final DoubleSupplier supplier = () -> 123.456D;
// when
thrown.expect(NullPointerException.class);
thrown.expectMessage("Provide an empty map instead of NULL.");
// then
new ConcurrentMapBasedDoubleSupplierMemoizer<>(cache, keySupplier, supplier);
}
项目:memoization.java
文件:ConcurrentMapBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
@SuppressWarnings(CompilerWarnings.UNUSED)
public void shouldRequireNonNullKeySupplier() {
// given
final ConcurrentMap<String, Double> cache = new ConcurrentHashMap<>();
final Supplier<String> keySupplier = null;
final DoubleSupplier supplier = () -> 123.456D;
// when
thrown.expect(NullPointerException.class);
thrown.expectMessage("Provide a key function, might just be 'MemoizationDefaults.defaultKeySupplier()'.");
// then
new ConcurrentMapBasedDoubleSupplierMemoizer<>(cache, keySupplier, supplier);
}
项目:memoization.java
文件:ConcurrentMapBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
@SuppressWarnings(CompilerWarnings.UNUSED)
public void shouldRequireNonNullValueSupplier() {
// given
final ConcurrentMap<String, Double> cache = new ConcurrentHashMap<>();
final Supplier<String> keySupplier = () -> "key";
final DoubleSupplier supplier = null;
// when
thrown.expect(NullPointerException.class);
thrown.expectMessage("Cannot memoize a NULL Supplier - provide an actual Supplier to fix this.");
// then
new ConcurrentMapBasedDoubleSupplierMemoizer<>(cache, keySupplier, supplier);
}
项目:memoization.java
文件:ConcurrentMapBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
public void shouldUseSuppliedKey() {
// given
final ConcurrentMap<String, Double> cache = new ConcurrentHashMap<>();
final Supplier<String> keySupplier = () -> "key";
final DoubleSupplier supplier = () -> 123.456D;
// when
final ConcurrentMapBasedDoubleSupplierMemoizer<String> memoizer = new ConcurrentMapBasedDoubleSupplierMemoizer<>(
cache, keySupplier, supplier);
// then
Assert.assertTrue("Cache is not empty before memoization", memoizer.viewCacheForTest().isEmpty());
Assert.assertEquals("Memoized value does not match expectations", 123.456D, memoizer.getAsDouble(), 0.0D);
Assert.assertFalse("Cache is still empty after memoization", memoizer.viewCacheForTest().isEmpty());
Assert.assertEquals("Memoization key does not match expectations", "key",
memoizer.viewCacheForTest().keySet().iterator().next());
}
项目:memoization.java
文件:ConcurrentMapBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
@SuppressWarnings(CompilerWarnings.BOXING)
public void shouldTriggerOnce() {
// given
final ConcurrentMap<String, Double> cache = new ConcurrentHashMap<>();
final Supplier<String> keySupplier = () -> "key";
final DoubleSupplier supplier = mock(DoubleSupplier.class);
given(supplier.getAsDouble()).willReturn(123.456D);
// when
final ConcurrentMapBasedDoubleSupplierMemoizer<String> memoizer = new ConcurrentMapBasedDoubleSupplierMemoizer<>(
cache, keySupplier, supplier);
// then
Assert.assertEquals("Memoized value does not match expectations", 123.456D, memoizer.getAsDouble(), 0.0D); // triggers
Assert.assertEquals("Memoized value does not match expectations", 123.456D, memoizer.getAsDouble(), 0.0D); // memoized
Assert.assertEquals("Memoized value does not match expectations", 123.456D, memoizer.getAsDouble(), 0.0D); // memoized
Assert.assertEquals("Memoized value does not match expectations", 123.456D, memoizer.getAsDouble(), 0.0D); // memoized
verify(supplier, times(1)).getAsDouble(); // real supplier triggered once, all other calls were memoized
}
项目:JglTF
文件:ViewConfiguration.java
/**
* Creates a new view configuration
*
* @param viewportSupplier A supplier that supplies the viewport,
* as 4 float elements, [x, y, width, height]
* @param aspectRatioSupplier An optional supplier for the aspect ratio.
* If this is <code>null</code>, then the aspect ratio of the
* camera will be used
* @param externalViewMatrixSupplier The optional external supplier of
* a view matrix.
* @param externalProjectionMatrixSupplier The optional external supplier
* of a projection matrix.
*/
ViewConfiguration(
Supplier<float[]> viewportSupplier,
DoubleSupplier aspectRatioSupplier,
Supplier<float[]> externalViewMatrixSupplier,
Supplier<float[]> externalProjectionMatrixSupplier)
{
this.viewportSupplier = Objects.requireNonNull(
viewportSupplier, "The viewportSupplier may not be null");
this.currentCameraModelSupplier = new SettableSupplier<CameraModel>();
this.aspectRatioSupplier = aspectRatioSupplier;
this.viewMatrixSupplier =
createViewMatrixSupplier(externalViewMatrixSupplier);
this.projectionMatrixSupplier =
createProjectionMatrixSupplier(externalProjectionMatrixSupplier);
}
项目:strongback-java
文件:Gyroscope.java
/**
* Create a gyroscope for the given functions that returns the angular displacement and velocity.
*
* @param angleSupplier the function that returns the angle; may not be null
* @param rateSupplier the function that returns the angular acceleration; may not be null
* @return the angle sensor
*/
public static Gyroscope create(DoubleSupplier angleSupplier, DoubleSupplier rateSupplier) {
return new Gyroscope() {
private volatile double zero = 0;
@Override
public double getAngle() {
return angleSupplier.getAsDouble() - zero;
}
@Override
public Gyroscope zero() {
zero = angleSupplier.getAsDouble();
return this;
}
@Override
public double getRate() {
return rateSupplier.getAsDouble();
}
};
}
项目:strongback-java
文件:DistanceSensor.java
/**
* Create a distance sensor for the given function that returns the distance.
*
* @param distanceSupplier the function that returns the distance; may not be null
* @return the angle sensor
*/
public static DistanceSensor create(DoubleSupplier distanceSupplier) {
return new DistanceSensor() {
private double zero = 0;
@Override
public double getDistanceInInches() {
return distanceSupplier.getAsDouble() - zero;
}
@Override
public DistanceSensor zero() {
zero = distanceSupplier.getAsDouble();
return this;
}
};
}
项目:strongback-java
文件:AngleSensor.java
/**
* Create an angle sensor around the given function that returns the angle.
*
* @param angleSupplier the function that returns the angle; may not be null
* @return the angle sensor
*/
public static AngleSensor create(DoubleSupplier angleSupplier) {
return new AngleSensor() {
private volatile double zero = 0;
@Override
public double getAngle() {
return angleSupplier.getAsDouble() - zero;
}
@Override
public AngleSensor zero() {
zero = angleSupplier.getAsDouble();
return this;
}
};
}
项目:strongback-java
文件:Compass.java
/**
* Create a angle sensor for the given function that returns the angle.
*
* @param angleSupplier the function that returns the angle; may not be null
* @return the angle sensor
*/
public static Compass create(DoubleSupplier angleSupplier) {
return new Compass() {
private volatile double zero = 0;
@Override
public double getAngle() {
return angleSupplier.getAsDouble() - zero;
}
@Override
public Compass zero() {
zero = angleSupplier.getAsDouble();
return this;
}
};
}
项目:strongback-java
文件:PowerPanel.java
/**
* Create a new PowerPanel from functions that supply the current for each channel, total current, voltage, and temperature.
*
* @param currentForChannel the function that returns the current for a given channel; may not be null
* @param totalCurrent the function that returns total current; may not be null
* @param voltage the function that returns voltage; may not be null
* @param temperature the function that returns temperature; may not be null
* @return the power panel; never null
* @see Hardware#powerPanel()
*/
public static PowerPanel create(IntToDoubleFunction currentForChannel, DoubleSupplier totalCurrent, DoubleSupplier voltage,
DoubleSupplier temperature) {
return new PowerPanel() {
@Override
public CurrentSensor getCurrentSensor(int channel) {
return () -> currentForChannel.applyAsDouble(channel);
}
@Override
public CurrentSensor getTotalCurrentSensor() {
return totalCurrent::getAsDouble;
}
@Override
public VoltageSensor getVoltageSensor() {
return voltage::getAsDouble;
}
@Override
public TemperatureSensor getTemperatureSensor() {
return voltage::getAsDouble;
}
};
}
项目:durian
文件:Box.java
/** Creates a `Box.Dbl` from a `DoubleSupplier` and a `DoubleConsumer`. */
public static Dbl from(DoubleSupplier getter, DoubleConsumer setter) {
return new Dbl() {
@Override
public double getAsDouble() {
return getter.getAsDouble();
}
@Override
public void set(double value) {
setter.accept(value);
}
@Override
public String toString() {
return "Box.Dbl.from[" + get() + "]";
}
};
}
项目:java-util-examples
文件:OptionalDoubleExample.java
@Test
public void optional_double_orElseGet() {
OptionalDouble optionalDouble = OptionalDouble.empty();
assertEquals(10, optionalDouble.orElseGet(() -> 10), 0);
// or
DoubleSupplier doubleSupplier = new DoubleSupplier() {
@Override
public double getAsDouble() {
return 10;
}
};
assertEquals(10, optionalDouble.orElseGet(doubleSupplier), 0);
}
项目:jOOL
文件:CheckedSupplierTest.java
@Test
public void testCheckedDoubleSupplier() {
final CheckedDoubleSupplier doubleSupplier = () -> {
throw new Exception("double");
};
DoubleSupplier s1 = Unchecked.doubleSupplier(doubleSupplier);
DoubleSupplier s2 = CheckedDoubleSupplier.unchecked(doubleSupplier);
DoubleSupplier s3 = Sneaky.doubleSupplier(doubleSupplier);
DoubleSupplier s4 = CheckedDoubleSupplier.sneaky(doubleSupplier);
assertDoubleSupplier(s1, UncheckedException.class);
assertDoubleSupplier(s2, UncheckedException.class);
assertDoubleSupplier(s3, Exception.class);
assertDoubleSupplier(s4, Exception.class);
}
项目:levelup-java-examples
文件:OptionalDoubleExample.java
@Test
public void optional_double_orElseGet() {
OptionalDouble optionalDouble = OptionalDouble.empty();
assertEquals(10, optionalDouble.orElseGet(() -> 10), 0);
// or
DoubleSupplier doubleSupplier = new DoubleSupplier() {
@Override
public double getAsDouble() {
return 10;
}
};
assertEquals(10, optionalDouble.orElseGet(doubleSupplier), 0);
}
项目:junit-easy-tools
文件:FieldAssignment.java
private static Map<Class<?>, Class<?>> createPrimitiveSuppliers() {
Map<Class<?>, Class<?>> map = new HashMap<>();
map.put(IntSupplier.class, Integer.TYPE);
map.put(LongSupplier.class, Long.TYPE);
map.put(BooleanSupplier.class, Boolean.TYPE);
map.put(DoubleSupplier.class, Double.TYPE);
return Collections.unmodifiableMap(map);
}
项目:Observables
文件:DoubleBinding.java
/**
* <p>Creates a binding using the passed supplier and list of dependencies.</p>
*
* <p>Note that this method requires manual implementation of the respective binding logic. For
* most cases, however, the static methods provided by this interface do suffice however and
* require far less manually programmed logic.</p>
*/
@Nonnull
static DoubleBinding create(@Nonnull DoubleSupplier supplier,
ReadOnlyObservable<?>... observables) {
return new AbstractDoubleBinding(new HashSet<>(Arrays.asList(observables))) {
@Override
protected Double compute() {
return supplier.getAsDouble();
}
};
}
项目:BetterRandom
文件:BaseRandom.java
/**
* Core of a reimplementation of {@link #nextGaussian()} whose locking is overridable and doesn't
* happen when a value is already stored.
* @param nextDouble shall return a random number between 0 and 1, like {@link #nextDouble()},
* but shall not debit the entropy count.
* @return a random number that is normally distributed with mean 0 and standard deviation 1.
*/
@SuppressWarnings("LocalVariableHidesMemberVariable") protected double internalNextGaussian(
final DoubleSupplier nextDouble) {
// See Knuth, ACP, Section 3.4.1 Algorithm C.
final double firstTryOut = Double.longBitsToDouble(nextNextGaussian.getAndSet(NAN_LONG_BITS));
if (Double.isNaN(firstTryOut)) {
lockForNextGaussian();
try {
// Another output may have become available while we waited for the lock
final double secondTryOut =
Double.longBitsToDouble(nextNextGaussian.getAndSet(NAN_LONG_BITS));
if (!Double.isNaN(secondTryOut)) {
return secondTryOut;
}
double s;
double v1;
double v2;
do {
v1 = (2 * nextDouble.getAsDouble()) - 1; // between -1 and 1
v2 = (2 * nextDouble.getAsDouble()) - 1; // between -1 and 1
s = (v1 * v1) + (v2 * v2);
} while ((s >= 1) || (s == 0));
final double multiplier = StrictMath.sqrt((-2 * StrictMath.log(s)) / s);
nextNextGaussian.set(Double.doubleToRawLongBits(v2 * multiplier));
return v1 * multiplier;
} finally {
unlockForNextGaussian();
}
} else {
return firstTryOut;
}
}
项目:What-Happened-to-Station-7
文件:ColorGradientSprite.java
public ColorGradientSprite(Entity e, Color start, Color end, DoubleSupplier variable)
{
this(e, () ->
{
float val = (float) variable.getAsDouble();
if(val > 1)
val = 1;
else if(val < 0)
val = 0;
return new Color(
(1 - val) * start.getRed() / 255 + val * end.getRed() / 255,
(1 - val) * start.getGreen() / 255 + val * end.getGreen() / 255,
(1 - val) * start.getBlue() / 255 + val * end.getBlue() / 255);
});
}
项目:monarch
文件:StatisticsImpl.java
@Override
public DoubleSupplier setDoubleSupplier(final int id, final DoubleSupplier supplier) {
if (id >= type.getDoubleStatCount()) {
throw new IllegalArgumentException("Id " + id + " is not in range for stat" + type);
}
return doubleSuppliers.put(id, supplier);
}
项目:monarch
文件:StatisticsImplTest.java
@Test
public void invokeDoubleSuppliersShouldUpdateStats() {
DoubleSupplier supplier1 = mock(DoubleSupplier.class);
when(supplier1.getAsDouble()).thenReturn(23.3);
stats.setDoubleSupplier(4, supplier1);
assertEquals(0, stats.invokeSuppliers());
verify(supplier1).getAsDouble();
assertEquals(23.3, stats.getDouble(4), 0.1f);
}
项目:thirdcoast
文件:DigitalOutputItem.java
@Override
public DoubleSupplier measurementFor(Measure measure) {
if (!MEASURES.contains(measure)) {
throw new IllegalArgumentException("invalid measure: " + measure.name());
}
return () -> digitalOutput.get() ? 1.0 : 0.0;
}
项目:thirdcoast
文件:ServoItem.java
@Override
public DoubleSupplier measurementFor(Measure measure) {
if (!MEASURES.contains(measure)) {
throw new IllegalArgumentException("invalid measure: " + measure.name());
}
switch (measure) {
case POSITION:
return servo::getPosition;
case ANGLE:
return servo::getAngle;
default:
throw new AssertionError(measure);
}
}
项目:thirdcoast
文件:DigitalInputItem.java
@Override
public DoubleSupplier measurementFor(Measure measure) {
if (!MEASURES.contains(measure)) {
throw new IllegalArgumentException("invalid measure: " + measure.name());
}
return () -> digitalInput.get() ? 1.0 : 0.0;
}
项目:thirdcoast
文件:Subscription.java
public void measurementsToJson(BufferedSink sink) throws IOException {
long ts = System.currentTimeMillis();
JsonWriter writer = JsonWriter.of(sink);
writer.beginObject();
writer.name("timestamp").value(ts);
writer.name("data");
writer.beginArray();
for (DoubleSupplier m : measurements) {
writer.value(m.getAsDouble());
}
writer.endArray();
writer.endObject();
}
项目:thirdcoast
文件:GraphableSwerveDrive.java
@Override
public DoubleSupplier measurementFor(Measure measure) {
if (!MEASURES.contains(measure)) {
throw new IllegalArgumentException("invalid measure: " + measure.name());
}
switch (measure) {
case ANGLE:
return gyro::getAngle;
case GYRO_YAW:
return gyro::getYaw;
default:
throw new AssertionError(measure);
}
}
项目:prometheus-client
文件:Gauge.java
private Gauge(final String name,
final String help,
final String[] labelNames,
final Map<List<String>, DoubleSupplier> valueSuppliers) {
super(name, help, labelNames);
this.valueSuppliers = valueSuppliers;
}
项目:prometheus-client
文件:Gauge.java
@Override
ChildMetricRepo<DoubleSupplier> createChildMetricRepo() {
if (valueSuppliers.size() == 1 && getLabelNames().isEmpty()) {
final DoubleSupplier supplier = valueSuppliers.values().iterator().next();
return new UnlabeledChildRepo<>(new MetricData<>(supplier));
} else {
final ChildMetricRepo<DoubleSupplier> result = new LabeledChildrenRepo<>(labelValues ->
new MetricData<>(
valueSuppliers.get(labelValues),
labelValues));
valueSuppliers.keySet().forEach(result::metricForLabels);
return result;
}
}
项目:prometheus-client
文件:Gauge.java
/**
* @see Gauge for more information on what value suppliers are and how they relate to label values
*/
public GaugeValueSuppliersBuilder withValueSupplier(final DoubleSupplier valueSupplier,
final String... labelValues) {
validateValueSupplier(valueSupplier);
validateValueSupplierLabels(labelNames.length, labelValues);
valueSuppliers.put(Arrays.asList(labelValues), valueSupplier);
return this;
}
项目:BoneJ2
文件:LineGrid.java
/**
* Randomly mirrors each plane of the grid to the other side of the centroid.
* Also mirrors the directions of the lines.
*/
public void randomReflection() {
final DoubleSupplier randomSign = () -> rng.nextBoolean() ? -1.0 : 1.0;
xySign = randomSign.getAsDouble();
xzSign = randomSign.getAsDouble();
yzSign = randomSign.getAsDouble();
}
项目:fika
文件:LazyDouble.java
private synchronized double maybeCompute(DoubleSupplier supplier) {
if (!initialized) {
value = requireNonNull(supplier.getAsDouble());
initialized = true;
}
return value;
}
项目:Minecraft-Flux
文件:IC2FluxCompat.java
private void tileFactorize(LazyEnergyCapProvider lecp) {
if (broken) return;
final ICapabilityProvider cp = lecp.getObject();
if (cp == null || !(cp instanceof TileEntity)) return;
final TileEntity te = (TileEntity) cp;
final IEnergyTile et = EnergyNet.instance.getTile(te.getWorld(), te.getPos());
final IEnergySource esrc = et instanceof IEnergySource ? (IEnergySource) et : null;
final IEnergySink esnk = et instanceof IEnergySink ? (IEnergySink) et : null;
DoubleSupplier cfunc = et instanceof BasicSource ? ((BasicSource) et)::getCapacity : et instanceof BasicSink ? ((BasicSink) et)::getCapacity : null;
DoubleSupplier efunc = et instanceof BasicSource ? ((BasicSource) et)::getEnergyStored : et instanceof BasicSink ? ((BasicSink) et)::getEnergyStored : null;
if (IC2_TEB.isInstance(cp)) {
Object o = null;
try {
o = COMPONENT.invoke(cp, IC2_ENERGY);
} catch (Exception e) {
MCFluxReport.sendException(e, "[IC2] FluxCompat factorize");
}
cfunc = doubleFunc(CAPACITY, o);
efunc = doubleFunc(ENERGY, o);
}
final EUDelegate eud = new EUDelegate(cfunc, efunc, esnk, esrc);
final EnergyTile[] es = new EnergyTile[7];
for (int i = 0; i < U.FANCY_FACING.length; i++) {
EnumFacing f = U.FANCY_FACING[i];
es[i] = new EnergyTile(eud, f);
}
lecp.update(es, new int[0], null, true);
CloudUtils.reportEnergy(cp.getClass(), et.getClass(), "ic2");
}
项目:Minecraft-Flux
文件:IC2FluxCompat.java
private static DoubleSupplier doubleFunc(Method m, Object o) {
return () -> {
try {
return (double) m.invoke(o);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
};
}
项目:memoization.java
文件:CaffeineMemoizeCustomKeyTest.java
/**
*
*/
@Test
public void shouldMemoizeDoubleSupplierWithKeyFunction() {
// given
final DoubleSupplier supplier = () -> 123.456D;
final Supplier<String> keySupplier = defaultKeySupplier();
// when
final DoubleSupplier memoize = CaffeineMemoize.doubleSupplier(supplier, keySupplier);
// then
Assert.assertNotNull("Memoized DoubleSupplier is NULL", memoize);
}
项目:memoization.java
文件:CaffeineMemoizeDefaultsTest.java
/**
*
*/
@Test
public void shouldMemoizeDoubleSupplier() {
// given
final DoubleSupplier supplier = () -> 123.456D;
// when
final DoubleSupplier memoize = CaffeineMemoize.doubleSupplier(supplier);
// then
Assert.assertNotNull("Memoized DoubleSupplier is NULL", memoize);
}
项目:memoization.java
文件:CaffeineMemoizeLambdaTest.java
/**
*
*/
@Test
public void shouldMemoizeDoubleSupplierWithLambda() {
// given
// when
final DoubleSupplier memoize = CaffeineMemoize.doubleSupplier(() -> 123.456D);
// then
Assert.assertNotNull("Memoized DoubleSupplier is NULL", memoize);
}
项目:memoization.java
文件:GuavaCacheBasedDoubleSupplierMemoizer.java
GuavaCacheBasedDoubleSupplierMemoizer(
final Cache<KEY, Double> cache,
final Supplier<KEY> keySupplier,
final DoubleSupplier supplier) {
super(cache);
this.keySupplier = keySupplier;
this.supplier = supplier;
}
项目:memoization.java
文件:GuavaMemoizeCustomKeyTest.java
/**
*
*/
@Test
public void shouldMemoizeDoubleSupplierWithKeySupplier() {
// given
final DoubleSupplier supplier = () -> 123.456D;
final Supplier<String> keySupplier = () -> "key";
// when
final DoubleSupplier memoize = GuavaMemoize.doubleSupplier(supplier, keySupplier);
// then
Assert.assertNotNull("Memoized DoubleSupplier is NULL", memoize);
}
项目:memoization.java
文件:GuavaCacheBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
public void shouldAcceptLoadingCacheAndKeySupplier() {
// given
final DoubleSupplier supplier = () -> 123.456D;
final Supplier<String> keySupplier = () -> "key";
final Cache<String, Double> cache = CacheBuilder.newBuilder().build();
// when
final GuavaCacheBasedDoubleSupplierMemoizer<String> memoizer = new GuavaCacheBasedDoubleSupplierMemoizer<>(
cache, keySupplier, supplier);
// then
Assert.assertNotNull(memoizer);
}
项目:memoization.java
文件:GuavaCacheBasedDoubleSupplierMemoizerTest.java
/**
*
*/
@Test
public void shouldReturnSuppliedValue() {
// given
final DoubleSupplier supplier = () -> 123.456D;
final Supplier<String> keySupplier = () -> "key";
final Cache<String, Double> cache = CacheBuilder.newBuilder().build();
// when
final GuavaCacheBasedDoubleSupplierMemoizer<String> memoizer = new GuavaCacheBasedDoubleSupplierMemoizer<>(
cache, keySupplier, supplier);
// then
Assert.assertEquals(123.456D, memoizer.getAsDouble(), 0.0D);
}