Java 类java.util.function.DoubleConsumer 实例源码
项目:morpheus-core
文件:ArrayBase.java
@Override
public final Array<T> forEachDouble(DoubleConsumer consumer) {
final int length = length();
if (isParallel() && length > 0) {
final int processors = Runtime.getRuntime().availableProcessors();
final int splitThreshold = parallel ? Math.max(length() / processors, 10000) : Integer.MAX_VALUE;
final ForEach action = new ForEach(0, length - 1, splitThreshold, consumer);
ForkJoinPool.commonPool().invoke(action);
} else {
for (int i=0; i<length; ++i) {
final double value = getDouble(i);
consumer.accept(value);
}
}
return this;
}
项目:Matcher
文件:Matcher.java
public void autoMatchAll(DoubleConsumer progressReceiver) {
if (autoMatchClasses(ClassifierLevel.Initial, absClassAutoMatchThreshold, relClassAutoMatchThreshold, progressReceiver)) {
autoMatchClasses(ClassifierLevel.Initial, absClassAutoMatchThreshold, relClassAutoMatchThreshold, progressReceiver);
}
autoMatchLevel(ClassifierLevel.Intermediate, progressReceiver);
autoMatchLevel(ClassifierLevel.Full, progressReceiver);
autoMatchLevel(ClassifierLevel.Extra, progressReceiver);
boolean matchedAny;
do {
matchedAny = autoMatchMethodArgs(ClassifierLevel.Full, absMethodArgAutoMatchThreshold, relMethodArgAutoMatchThreshold, progressReceiver);
} while (matchedAny);
env.getCache().clear();
}
项目:openjdk-jdk10
文件:DoublePipeline.java
@Override
public final DoubleStream peek(DoubleConsumer action) {
Objects.requireNonNull(action);
return new StatelessOp<Double>(this, StreamShape.DOUBLE_VALUE,
0) {
@Override
Sink<Double> opWrapSink(int flags, Sink<Double> sink) {
return new Sink.ChainedDouble<Double>(sink) {
@Override
public void accept(double t) {
action.accept(t);
downstream.accept(t);
}
};
}
};
}
项目:Matcher
文件:Matcher.java
private <T, C> void runInParallel(List<T> workSet, Consumer<T> worker, DoubleConsumer progressReceiver) {
if (workSet.isEmpty()) return;
AtomicInteger itemsDone = new AtomicInteger();
int updateRate = Math.max(1, workSet.size() / 200);
workSet.parallelStream().forEach(workItem -> {
worker.accept(workItem);
int cItemsDone = itemsDone.incrementAndGet();
if ((cItemsDone % updateRate) == 0) {
progressReceiver.accept((double) cItemsDone / workSet.size());
}
});
}
项目:openjdk-jdk10
文件:DoubleStream.java
/**
* Returns an infinite sequential ordered {@code DoubleStream} produced by iterative
* application of a function {@code f} to an initial element {@code seed},
* producing a {@code Stream} consisting of {@code seed}, {@code f(seed)},
* {@code f(f(seed))}, etc.
*
* <p>The first element (position {@code 0}) in the {@code DoubleStream}
* will be the provided {@code seed}. For {@code n > 0}, the element at
* position {@code n}, will be the result of applying the function {@code f}
* to the element at position {@code n - 1}.
*
* <p>The action of applying {@code f} for one element
* <a href="../concurrent/package-summary.html#MemoryVisibility"><i>happens-before</i></a>
* the action of applying {@code f} for subsequent elements. For any given
* element the action may be performed in whatever thread the library
* chooses.
*
* @param seed the initial element
* @param f a function to be applied to the previous element to produce
* a new element
* @return a new sequential {@code DoubleStream}
*/
public static DoubleStream iterate(final double seed, final DoubleUnaryOperator f) {
Objects.requireNonNull(f);
Spliterator.OfDouble spliterator = new Spliterators.AbstractDoubleSpliterator(Long.MAX_VALUE,
Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL) {
double prev;
boolean started;
@Override
public boolean tryAdvance(DoubleConsumer action) {
Objects.requireNonNull(action);
double t;
if (started)
t = f.applyAsDouble(prev);
else {
t = seed;
started = true;
}
action.accept(prev = t);
return true;
}
};
return StreamSupport.doubleStream(spliterator, false);
}
项目:BetterRandom
文件:BaseRandomTest.java
@Test(timeOut = 20_000, groups = "non-deterministic") public void testNextGaussianStatistically()
throws SeedException {
final BaseRandom rng = createRng();
final int iterations = 10000;
final SynchronizedDescriptiveStatistics stats = new SynchronizedDescriptiveStatistics();
rng.gaussians(iterations).spliterator().forEachRemaining((DoubleConsumer) stats::addValue);
final double observedSD = stats.getStandardDeviation();
Reporter.log("Expected SD for Gaussians: 1, observed SD: " + observedSD);
assertGreaterOrEqual(observedSD, 0.97);
assertLessOrEqual(observedSD, 1.03);
assertGreaterOrEqual(stats.getMax(), 2.0);
assertLessOrEqual(stats.getMin(), -2.0);
assertGreaterOrEqual(stats.getMean(), -0.1);
assertLessOrEqual(stats.getMean(), 0.1);
final double median = stats.getPercentile(50);
assertGreaterOrEqual(median, -0.1);
assertLessOrEqual(median, 0.1);
}
项目:OpenJSharp
文件:DoublePipeline.java
@Override
public final DoubleStream peek(DoubleConsumer action) {
Objects.requireNonNull(action);
return new StatelessOp<Double>(this, StreamShape.DOUBLE_VALUE,
0) {
@Override
Sink<Double> opWrapSink(int flags, Sink<Double> sink) {
return new Sink.ChainedDouble<Double>(sink) {
@Override
public void accept(double t) {
action.accept(t);
downstream.accept(t);
}
};
}
};
}
项目:openjdk-jdk10
文件:WhileOps.java
@Override
public boolean tryAdvance(DoubleConsumer action) {
boolean test = true;
if (takeOrDrop && // If can take
checkCancelOnCount() && // and if not cancelled
s.tryAdvance(this) && // and if advanced one element
(test = p.test(t))) { // and test on element passes
action.accept(t); // then accept element
return true;
}
else {
// Taking is finished
takeOrDrop = false;
// Cancel all further traversal and splitting operations
// only if test of element failed (short-circuited)
if (!test)
cancel.set(true);
return false;
}
}
项目:openjdk-jdk10
文件:SpinedBufferTest.java
@Test(dataProvider = "DoubleSpinedBuffer", groups = { "serialization-hostile" })
public void testLongLastSplit(double[] array, SpinedBuffer.OfDouble sb) {
Spliterator.OfDouble spliterator = sb.spliterator();
Spliterator.OfDouble split = spliterator.trySplit();
long splitSizes = (split == null) ? 0 : split.getExactSizeIfKnown();
long lastSplitSize = spliterator.getExactSizeIfKnown();
splitSizes += lastSplitSize;
assertEquals(splitSizes, array.length);
List<Double> contentOfLastSplit = new ArrayList<>();
spliterator.forEachRemaining((DoubleConsumer) contentOfLastSplit::add);
assertEquals(contentOfLastSplit.size(), lastSplitSize);
List<Double> end = Arrays.stream(array)
.boxed()
.skip(array.length - lastSplitSize)
.collect(Collectors.toList());
assertEquals(contentOfLastSplit, end);
}
项目:jdk8u-jdk
文件:NodeBuilderTest.java
@Test(dataProvider = "Node.Builder<Double>")
public void testDoubleIteration(List<Double> l, Function<Integer, Node.Builder.OfDouble> m) {
Node.Builder.OfDouble nb = m.apply(l.size());
nb.begin(l.size());
for (Double i : l) {
nb.accept((double) i);
}
nb.end();
Node.OfDouble n = nb.build();
assertEquals(n.count(), l.size());
{
List<Double> _l = new ArrayList<>();
n.forEach((DoubleConsumer) _l::add);
assertContents(_l, l);
}
}
项目:openjdk-jdk10
文件:Node.java
@Override
default Node.OfDouble truncate(long from, long to, IntFunction<Double[]> generator) {
if (from == 0 && to == count())
return this;
long size = to - from;
Spliterator.OfDouble spliterator = spliterator();
Node.Builder.OfDouble nodeBuilder = Nodes.doubleBuilder(size);
nodeBuilder.begin(size);
for (int i = 0; i < from && spliterator.tryAdvance((DoubleConsumer) e -> { }); i++) { }
if (to == count()) {
spliterator.forEachRemaining((DoubleConsumer) nodeBuilder);
} else {
for (int i = 0; i < size && spliterator.tryAdvance((DoubleConsumer) nodeBuilder); i++) { }
}
nodeBuilder.end();
return nodeBuilder.build();
}
项目:openjdk-jdk10
文件:PrimitiveIteratorDefaults.java
public void testDoubleForEachRemainingWithNull() {
PrimitiveIterator.OfDouble i = new PrimitiveIterator.OfDouble() {
@Override
public double nextDouble() {
return 0;
}
@Override
public boolean hasNext() {
return false;
}
};
assertThrowsNPE(() -> i.forEachRemaining((DoubleConsumer) null));
assertThrowsNPE(() -> i.forEachRemaining((Consumer<Double>) null));
}
项目:GestureFX
文件:GesturePane.java
private void animateValue(double from,
double to,
Duration duration,
Interpolator interpolator, DoubleConsumer consumer,
EventHandler<ActionEvent> l) {
timeline.stop();
timeline.getKeyFrames().clear();
KeyValue keyValue = new KeyValue(new WritableValue<Double>() {
@Override
public Double getValue() {
return from;
}
@Override
public void setValue(Double value) {
consumer.accept(value);
}
}, to, interpolator == null ? Interpolator.LINEAR : interpolator);
timeline.getKeyFrames().add(new KeyFrame(duration, keyValue));
timeline.setOnFinished(l);
timeline.play();
}
项目:openjdk-jdk10
文件:Random.java
public void forEachRemaining(DoubleConsumer consumer) {
if (consumer == null) throw new NullPointerException();
long i = index, f = fence;
if (i < f) {
index = f;
Random r = rng;
double o = origin, b = bound;
do {
consumer.accept(r.internalNextDouble(o, b));
} while (++i < f);
}
}
项目:openjdk-jdk10
文件:DoublePipeline.java
@Override
public void forEachOrdered(DoubleConsumer consumer) {
if (!isParallel()) {
adapt(sourceStageSpliterator()).forEachRemaining(consumer);
}
else {
super.forEachOrdered(consumer);
}
}
项目:jdk8u-jdk
文件:ThreadLocalRandom.java
public boolean tryAdvance(DoubleConsumer consumer) {
if (consumer == null) throw new NullPointerException();
long i = index, f = fence;
if (i < f) {
consumer.accept(ThreadLocalRandom.current().internalNextDouble(origin, bound));
index = i + 1;
return true;
}
return false;
}
项目:jdk8u-jdk
文件:TeeOpTest.java
@Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class)
public void testDoubleOps(String name, final TestData.OfDouble data) {
class RecordingConsumer extends AbstractRecordingConsumer<Double> implements DoubleConsumer {
public void accept(double t) {
list.add(t);
}
}
final RecordingConsumer b = new RecordingConsumer();
withData(data)
.stream(s -> s.peek(b))
.before(b::before)
.after(b::after)
.exercise();
}
项目:openjdk-jdk10
文件:TeeOpTest.java
@Test(dataProvider = "DoubleStreamTestData", dataProviderClass = DoubleStreamTestDataProvider.class)
public void testDoubleOps(String name, final TestData.OfDouble data) {
class RecordingConsumer extends AbstractRecordingConsumer<Double> implements DoubleConsumer {
public void accept(double t) {
list.add(t);
}
}
final RecordingConsumer b = new RecordingConsumer();
withData(data)
.stream(s -> s.peek(b))
.before(b::before)
.after(b::after)
.exercise();
}
项目:openjdk-jdk10
文件:Spliterators.java
/**
* Creates an {@code PrimitiveIterator.OfDouble} from a
* {@code Spliterator.OfDouble}.
*
* <p>Traversal of elements should be accomplished through the iterator.
* The behaviour of traversal is undefined if the spliterator is operated
* after the iterator is returned.
*
* @param spliterator The spliterator
* @return An iterator
* @throws NullPointerException if the given spliterator is {@code null}
*/
public static PrimitiveIterator.OfDouble iterator(Spliterator.OfDouble spliterator) {
Objects.requireNonNull(spliterator);
class Adapter implements PrimitiveIterator.OfDouble, DoubleConsumer {
boolean valueReady = false;
double nextElement;
@Override
public void accept(double t) {
valueReady = true;
nextElement = t;
}
@Override
public boolean hasNext() {
if (!valueReady)
spliterator.tryAdvance(this);
return valueReady;
}
@Override
public double nextDouble() {
if (!valueReady && !hasNext())
throw new NoSuchElementException();
else {
valueReady = false;
return nextElement;
}
}
}
return new Adapter();
}
项目:Matcher
文件:Matcher.java
public boolean autoMatchFields(ClassifierLevel level, double absThreshold, double relThreshold, DoubleConsumer progressReceiver) {
AtomicInteger totalUnmatched = new AtomicInteger();
Map<FieldInstance, FieldInstance> matches = match(level, absThreshold, relThreshold, cls -> cls.getFields(), FieldClassifier::rank, progressReceiver, totalUnmatched);
for (Map.Entry<FieldInstance, FieldInstance> entry : matches.entrySet()) {
match(entry.getKey(), entry.getValue());
}
System.out.println("Auto matched "+matches.size()+" fields ("+totalUnmatched.get()+" unmatched)");
return !matches.isEmpty();
}
项目:openjdk-jdk10
文件:Spliterators.java
@Override
public boolean tryAdvance(DoubleConsumer action) {
if (action == null)
throw new NullPointerException();
if (index >= 0 && index < fence) {
action.accept(array[index++]);
return true;
}
return false;
}
项目:swage
文件:DoubleFormatTest.java
private long run_benchmark(long iterations, DoubleConsumer test) {
long seed = 12345;
Random rand = new Random();
rand.setSeed(seed);
long startTime = System.nanoTime();
for(int i = 0; i < iterations; i++) {
test.accept(rand.nextDouble());
}
long endTime = System.nanoTime();
return TimeUnit.MILLISECONDS.convert(endTime - startTime, TimeUnit.NANOSECONDS);
}
项目:OpenJSharp
文件:Streams.java
@Override
public boolean tryAdvance(DoubleConsumer action) {
Objects.requireNonNull(action);
if (count == -2) {
action.accept(first);
count = -1;
return true;
}
else {
return false;
}
}
项目:jdk8u-jdk
文件:Random.java
public boolean tryAdvance(DoubleConsumer consumer) {
if (consumer == null) throw new NullPointerException();
long i = index, f = fence;
if (i < f) {
consumer.accept(rng.internalNextDouble(origin, bound));
index = i + 1;
return true;
}
return false;
}
项目:OpenJSharp
文件:DoublePipeline.java
@Override
public void forEach(DoubleConsumer consumer) {
if (!isParallel()) {
adapt(sourceStageSpliterator()).forEachRemaining(consumer);
}
else {
super.forEach(consumer);
}
}
项目:OpenJSharp
文件:DoublePipeline.java
@Override
public void forEachOrdered(DoubleConsumer consumer) {
if (!isParallel()) {
adapt(sourceStageSpliterator()).forEachRemaining(consumer);
}
else {
super.forEachOrdered(consumer);
}
}
项目:OpenJSharp
文件:SpinedBuffer.java
@Override
public void forEach(Consumer<? super Double> consumer) {
if (consumer instanceof DoubleConsumer) {
forEach((DoubleConsumer) consumer);
}
else {
if (Tripwire.ENABLED)
Tripwire.trip(getClass(), "{0} calling SpinedBuffer.OfDouble.forEach(Consumer)");
spliterator().forEachRemaining(consumer);
}
}
项目:OpenJSharp
文件:SpinedBuffer.java
@Override
protected void arrayForEach(double[] array,
int from, int to,
DoubleConsumer consumer) {
for (int i = from; i < to; i++)
consumer.accept(array[i]);
}
项目:openjdk-jdk10
文件:SpinedBuffer.java
@Override
protected void arrayForEach(double[] array,
int from, int to,
DoubleConsumer consumer) {
for (int i = from; i < to; i++)
consumer.accept(array[i]);
}
项目:openjdk-jdk10
文件:SplittableRandom.java
public boolean tryAdvance(DoubleConsumer consumer) {
if (consumer == null) throw new NullPointerException();
long i = index, f = fence;
if (i < f) {
consumer.accept(rng.internalNextDouble(origin, bound));
index = i + 1;
return true;
}
return false;
}
项目:OpenJSharp
文件:StreamSpliterators.java
@Override
public boolean tryAdvance(DoubleConsumer consumer) {
Objects.requireNonNull(consumer);
boolean hasNext = doAdvance();
if (hasNext)
consumer.accept(buffer.get(nextToConsume));
return hasNext;
}
项目:OpenJSharp
文件:StreamSpliterators.java
@Override
public boolean tryAdvance(DoubleConsumer action) {
Objects.requireNonNull(action);
action.accept(s.getAsDouble());
return true;
}
项目:openjdk-jdk10
文件:Streams.java
@Override
public boolean tryAdvance(DoubleConsumer action) {
Objects.requireNonNull(action);
if (count == -2) {
action.accept(first);
count = -1;
return true;
}
else {
return false;
}
}
项目:jdk8u-jdk
文件:Spliterators.java
/**
* Creates an {@code PrimitiveIterator.OfDouble} from a
* {@code Spliterator.OfDouble}.
*
* <p>Traversal of elements should be accomplished through the iterator.
* The behaviour of traversal is undefined if the spliterator is operated
* after the iterator is returned.
*
* @param spliterator The spliterator
* @return An iterator
* @throws NullPointerException if the given spliterator is {@code null}
*/
public static PrimitiveIterator.OfDouble iterator(Spliterator.OfDouble spliterator) {
Objects.requireNonNull(spliterator);
class Adapter implements PrimitiveIterator.OfDouble, DoubleConsumer {
boolean valueReady = false;
double nextElement;
@Override
public void accept(double t) {
valueReady = true;
nextElement = t;
}
@Override
public boolean hasNext() {
if (!valueReady)
spliterator.tryAdvance(this);
return valueReady;
}
@Override
public double nextDouble() {
if (!valueReady && !hasNext())
throw new NoSuchElementException();
else {
valueReady = false;
return nextElement;
}
}
}
return new Adapter();
}
项目:OpenJSharp
文件:Node.java
@Override
default Node.OfDouble truncate(long from, long to, IntFunction<Double[]> generator) {
if (from == 0 && to == count())
return this;
long size = to - from;
Spliterator.OfDouble spliterator = spliterator();
Node.Builder.OfDouble nodeBuilder = Nodes.doubleBuilder(size);
nodeBuilder.begin(size);
for (int i = 0; i < from && spliterator.tryAdvance((DoubleConsumer) e -> { }); i++) { }
for (int i = 0; (i < size) && spliterator.tryAdvance((DoubleConsumer) nodeBuilder); i++) { }
nodeBuilder.end();
return nodeBuilder.build();
}
项目:OpenJSharp
文件:PrimitiveIterator.java
/**
* {@inheritDoc}
* @implSpec
* If the action is an instance of {@code DoubleConsumer} then it is
* cast to {@code DoubleConsumer} and passed to
* {@link #forEachRemaining}; otherwise the action is adapted to
* an instance of {@code DoubleConsumer}, by boxing the argument of
* {@code DoubleConsumer}, and then passed to
* {@link #forEachRemaining}.
*/
@Override
default void forEachRemaining(Consumer<? super Double> action) {
if (action instanceof DoubleConsumer) {
forEachRemaining((DoubleConsumer) action);
}
else {
// The method reference action::accept is never null
Objects.requireNonNull(action);
if (Tripwire.ENABLED)
Tripwire.trip(getClass(), "{0} calling PrimitiveIterator.OfDouble.forEachRemainingDouble(action::accept)");
forEachRemaining((DoubleConsumer) action::accept);
}
}
项目:OpenJSharp
文件:Spliterator.java
/**
* {@inheritDoc}
* @implSpec
* If the action is an instance of {@code DoubleConsumer} then it is
* cast to {@code DoubleConsumer} and passed to
* {@link #tryAdvance(java.util.function.DoubleConsumer)}; otherwise
* the action is adapted to an instance of {@code DoubleConsumer}, by
* boxing the argument of {@code DoubleConsumer}, and then passed to
* {@link #tryAdvance(java.util.function.DoubleConsumer)}.
*/
@Override
default boolean tryAdvance(Consumer<? super Double> action) {
if (action instanceof DoubleConsumer) {
return tryAdvance((DoubleConsumer) action);
}
else {
if (Tripwire.ENABLED)
Tripwire.trip(getClass(),
"{0} calling Spliterator.OfDouble.tryAdvance((DoubleConsumer) action::accept)");
return tryAdvance((DoubleConsumer) action::accept);
}
}
项目:OpenJSharp
文件:Spliterator.java
/**
* {@inheritDoc}
* @implSpec
* If the action is an instance of {@code DoubleConsumer} then it is
* cast to {@code DoubleConsumer} and passed to
* {@link #forEachRemaining(java.util.function.DoubleConsumer)};
* otherwise the action is adapted to an instance of
* {@code DoubleConsumer}, by boxing the argument of
* {@code DoubleConsumer}, and then passed to
* {@link #forEachRemaining(java.util.function.DoubleConsumer)}.
*/
@Override
default void forEachRemaining(Consumer<? super Double> action) {
if (action instanceof DoubleConsumer) {
forEachRemaining((DoubleConsumer) action);
}
else {
if (Tripwire.ENABLED)
Tripwire.trip(getClass(),
"{0} calling Spliterator.OfDouble.forEachRemaining((DoubleConsumer) action::accept)");
forEachRemaining((DoubleConsumer) action::accept);
}
}
项目:OpenJSharp
文件:Random.java
public boolean tryAdvance(DoubleConsumer consumer) {
if (consumer == null) throw new NullPointerException();
long i = index, f = fence;
if (i < f) {
consumer.accept(rng.internalNextDouble(origin, bound));
index = i + 1;
return true;
}
return false;
}
项目:OpenJSharp
文件:Random.java
public void forEachRemaining(DoubleConsumer consumer) {
if (consumer == null) throw new NullPointerException();
long i = index, f = fence;
if (i < f) {
index = f;
Random r = rng;
double o = origin, b = bound;
do {
consumer.accept(r.internalNextDouble(o, b));
} while (++i < f);
}
}