Java 类java.util.function.BiFunction 实例源码
项目:spoj
文件:MINUS_Testing.java
static void testRandomized(BiFunction<int[], Integer, List<Integer>> solution) {
Random rnd = new Random(0);
for (int test = 0; test < 20; test++) {
int[] arr = new int[rnd.nextInt(MAX_ITEMS) + 1];
for (int i = 0; i < arr.length; i++) {
arr[i] = rnd.nextInt(MAX_VALUE);
}
for (int j = 0; j < 5; j++) {
int target = randomDifference(arr, 0, arr.length - 1, rnd);
System.out.println("Array length: " + arr.length);
System.out.println("Target: " + target);
System.out.println("Array:");
System.out.println(Arrays.toString(arr).replaceAll("[\\[\\],]", " ").trim());
List<Integer> subtractcionOrder = solution.apply(arr, target);
verifySolution(arr, target, subtractcionOrder);
System.out.println("Result: " + subtractcionOrder.toString().replaceAll("[\\[\\],]", " ").trim());
System.out.println();
}
}
}
项目:openjdk-jdk10
文件:HttpRequestBuilderTest.java
public static <R,P1, P2> R test2(String name, R receiver, BiFunction<P1, P2, R> m,
P1 arg1, P2 arg2,
Class<? extends Exception> ...ex) {
try {
R result = m.apply(arg1, arg2);
if (!shouldFail(ex)) {
System.out.println("success: " + name + "(" + arg1 + ", "
+ arg2 + ")");
return result;
} else {
throw new AssertionError("Expected " + expectedNames(ex)
+ " not raised for "
+ name + "(" + arg1 +", " + arg2 + ")");
}
} catch (Exception x) {
if (!isExpected(x, ex)) {
throw x;
} else {
System.out.println("success: " + name + "(" + arg1 + ", "
+ arg2 + ") - Got expected exception: " + x);
return receiver;
}
}
}
项目:jdk8u-jdk
文件:HashMap.java
@Override
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
Node<K,V>[] tab;
if (function == null)
throw new NullPointerException();
if (size > 0 && (tab = table) != null) {
int mc = modCount;
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e = tab[i]; e != null; e = e.next) {
e.value = function.apply(e.key, e.value);
}
}
if (modCount != mc)
throw new ConcurrentModificationException();
}
}
项目:omero-ms-queue
文件:Streams.java
/**
* Applies the function {@code f} to each element of the stream.
* The function {@code f} is called with the index (in {@code ys}) of the
* element to map (first argument) and with the element itself (second
* argument). That is: {@code map(f,[v,w,...]) = [f(0,v),f(1,w),...]}.
* For example (pseudo code) if {@code f(i,x) = i+x} then
* {@code map(f,[1,2,3]) = [1,3,5]}.
* @param <Y> any type.
* @param <Z> any type.
* @param f turns an index and a {@code Y} into a {@code Z}.
* @param ys the list to map.
* @return a new list with the mapped elements.
* @throws NullPointerException if any argument is {@code null}.
*/
public static <Y, Z>
Stream<Z> map(BiFunction<Integer, Y, Z> f, Stream<Y> ys) {
requireNonNull(f, "f");
requireNonNull(ys, "ys");
Iterator<Y> iy = ys.iterator();
List<Z> zs = new ArrayList<>();
int index = 0;
while (iy.hasNext()) {
zs.add(f.apply(index++, iy.next()));
}
return zs.stream();
}
项目:ndbc
文件:ConnectionTest.java
@Test
public void executePreparedStatement() throws CheckedFutureException {
final Long result = 413L;
final String command = "command";
final Integer set = 223;
final PreparedStatement ps = PreparedStatement.apply(command).setInteger(set);
final Supplier<Connection> sup = new ConnectionSupplier() {
@Override
BiFunction<String, List<Value<?>>, Exchange<Long>> extendedExecuteExchange() {
return (c, b) -> {
assertEquals(command, c);
assertEquals(Arrays.asList(new IntegerValue(set)), b);
return Exchange.value(result);
};
}
};
assertEquals(result, sup.get().execute(ps).get(timeout));
}
项目:vertx-zero
文件:Statute.java
/**
* @param first
* @param second
* @param function
* @param <F>
* @param <S>
* @param <T>
* @return
*/
public static <F, S, T> List<T> zipper(
final List<F> first,
final List<S> second,
final BiFunction<F, S, T> function
) {
final List<T> result = new ArrayList<>();
Fn.itList(first, (key, index) -> {
final S value = getEnsure(second, index);
final T merged = function.apply(key, value);
if (null != merged) {
result.add(merged);
}
});
return result;
}
项目:athena
文件:VirtualNetworkWebResourceTest.java
public JsonArrayMatcher(T vnetEntityValue, Function<T, String> getKey1,
BiPredicate<T, JsonObject> checkKey1,
List<String> jsonFieldNames1,
BiFunction<T, String, String> getValue1) {
vnetEntity = vnetEntityValue;
getKey = getKey1;
checkKey = checkKey1;
jsonFieldNames = jsonFieldNames1;
getValue = getValue1;
}
项目:openjdk-jdk10
文件:ReduceOps.java
/**
* Constructs a {@code TerminalOp} that implements a functional reduce on
* reference values.
*
* @param <T> the type of the input elements
* @param <U> the type of the result
* @param seed the identity element for the reduction
* @param reducer the accumulating function that incorporates an additional
* input element into the result
* @param combiner the combining function that combines two intermediate
* results
* @return a {@code TerminalOp} implementing the reduction
*/
public static <T, U> TerminalOp<T, U>
makeRef(U seed, BiFunction<U, ? super T, U> reducer, BinaryOperator<U> combiner) {
Objects.requireNonNull(reducer);
Objects.requireNonNull(combiner);
class ReducingSink extends Box<U> implements AccumulatingSink<T, U, ReducingSink> {
@Override
public void begin(long size) {
state = seed;
}
@Override
public void accept(T t) {
state = reducer.apply(state, t);
}
@Override
public void combine(ReducingSink other) {
state = combiner.apply(state, other.state);
}
}
return new ReduceOp<T, U, ReducingSink>(StreamShape.REFERENCE) {
@Override
public ReducingSink makeSink() {
return new ReducingSink();
}
};
}
项目:counter-cloud
文件:CountService.java
private BiFunction<List<RangeStatistics>, RangeStatistics, List<RangeStatistics>> accumulatingFunction() {
return (rangeStatistics, rangeStatistic) -> {
List<RangeStatistics> result = new ArrayList<>(rangeStatistics);
addOrReplace(rangeStatistics, result, rangeStatistic);
return result;
};
}
项目:openjdk-jdk10
文件:ArraysEqCmpTest.java
@Test(dataProvider = "arrayTypesProvider")
public void testArray(ArrayType<?> arrayType) {
BiFunction<ArrayType<?>, Integer, Object> constructor = (at, s) -> {
Object a = at.construct(s);
for (int x = 0; x < s; x++) {
at.set(a, x, x % 8);
}
return a;
};
BiFunction<ArrayType<?>, Object, Object> cloner = (at, a) ->
constructor.apply(at, Array.getLength(a));
testArrayType(arrayType, constructor, cloner);
}
项目:athena
文件:GossipDeviceStoreTest.java
@Before
public void setUp() throws Exception {
clusterCommunicator = createNiceMock(ClusterCommunicationService.class);
clusterCommunicator.addSubscriber(anyObject(MessageSubject.class),
anyObject(ClusterMessageHandler.class), anyObject(ExecutorService.class));
expectLastCall().anyTimes();
replay(clusterCommunicator);
ClusterService clusterService = new TestClusterService();
testGossipDeviceStore = new TestGossipDeviceStore(deviceClockService, clusterService, clusterCommunicator);
testGossipDeviceStore.mastershipService = new TestMastershipService();
ecMapBuilder = createNiceMock(EventuallyConsistentMapBuilder.class);
expect(ecMapBuilder.withName(anyObject(String.class))).andReturn(ecMapBuilder).anyTimes();
expect(ecMapBuilder.withSerializer(anyObject(KryoNamespace.Builder.class))).andReturn(ecMapBuilder).anyTimes();
expect(ecMapBuilder.withAntiEntropyPeriod(5, TimeUnit.SECONDS)).andReturn(ecMapBuilder).anyTimes();
expect(ecMapBuilder.withTimestampProvider(anyObject(BiFunction.class))).andReturn(ecMapBuilder).anyTimes();
expect(ecMapBuilder.withTombstonesDisabled()).andReturn(ecMapBuilder).anyTimes();
ecMap = createNiceMock(EventuallyConsistentMap.class);
expect(ecMapBuilder.build()).andReturn(ecMap).anyTimes();
testStorageService = createNiceMock(StorageService.class);
expect(testStorageService.eventuallyConsistentMapBuilder()).andReturn(ecMapBuilder).anyTimes();
replay(testStorageService, ecMapBuilder, ecMap);
testGossipDeviceStore.storageService = testStorageService;
testGossipDeviceStore.deviceClockService = deviceClockService;
gossipDeviceStore = testGossipDeviceStore;
gossipDeviceStore.activate();
deviceStore = gossipDeviceStore;
verify(clusterCommunicator);
reset(clusterCommunicator);
}
项目:control
文件:ThrowingLambdas.java
/**
* Converts the provided bifunction into a regular BiFunction, where any thrown exceptions
* are wrapped in a RuntimeException
*/
static <A, B, R, X extends Exception> BiFunction<A, B, R> throwingRuntime(ThrowingBiFunction<A, B, R, X> f) {
return (a, b) -> {
try {
return f.apply(a, b);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
};
}
项目:elasticsearch_my
文件:ESIndexLevelReplicationTestCase.java
public Future<Void> asyncRecoverReplica(IndexShard replica, BiFunction<IndexShard, DiscoveryNode, RecoveryTarget> targetSupplier)
throws IOException {
FutureTask<Void> task = new FutureTask<>(() -> {
recoverReplica(replica, targetSupplier);
return null;
});
threadPool.generic().execute(task);
return task;
}
项目:n4js
文件:UninstallNpmDependencyButtonListener.java
UninstallNpmDependencyButtonListener(BiFunction<Collection<String>, IProgressMonitor, IStatus> uninstallAction,
Supplier<IInputValidator> validator, StatusHelper statusHelper, Supplier<String> initalValue) {
this.statusHelper = statusHelper;
this.validator = validator;
this.uninstallAction = uninstallAction;
this.initalValue = initalValue;
}
项目:SparseBukkitAPI
文件:Vector3d.java
public Vector3d pairOp(Vector3d other, BiFunction<Double, Double, Double> function)
{
setX(function.apply(x(), other.x()));
setY(function.apply(y(), other.y()));
setZ(function.apply(z(), other.z()));
return this;
}
项目:crypto-shuffle
文件:SymmetricEncryptionAlgorithm.java
SymmetricEncryptionAlgorithm(final KeyGenerator keyGenerator,
final BiFunction<SecretKey, byte[], byte[]> encryptionFunction,
final BiFunction<byte[], byte[], byte[]> decryptionFunction) {
this.keyGenerator = keyGenerator;
this.encryptionFunction = encryptionFunction;
this.decryptionFunction = decryptionFunction;
}
项目:spoj
文件:MMINPAID_1.java
static void testRandomized1(BiFunction<Road[], Integer, Integer> tested) {
Random rnd = new Random(1);
for (int i = 0; i < 100; i++) {
int citiesCount = rnd.nextInt(10) + 1;
Road[] roads = new Road[Math.min(10, citiesCount + rnd.nextInt(11 - citiesCount))];
for (int j = 0; j < roads.length; j++) {
roads[j] = new Road(rnd.nextInt(citiesCount) + 1, rnd.nextInt(citiesCount) + 1, rnd.nextInt(citiesCount) + 1, rnd.nextInt(101), rnd
.nextInt(101));
}
compareResults(roads, citiesCount, tested);
}
}
项目:tdb3
文件:BatchingIterator.java
/**
* @param start Beginning of iteration (inclusive)
* @param finish End of iteration (exclusive - depends on the {@code sliceGenerator}
* @param sliceSize Slice size.
* @param sliceGenerator A BiFunction used to get the next slicing iterator. Called with the next start and overall finish.
*/
public BatchingIterator(X start, X finish, int sliceSize,
BiFunction<X, X, Iterator<X>> sliceGenerator
) {
if ( sliceSize <= 0 ) throw new IllegalArgumentException("Slice size must be positive");
this.start = requireNonNull(start, "Argument start");
this.nextStart = start;
this.finish = requireNonNull(finish, "Argument finish");
this.sliceSize = sliceSize;
this.sliceGenerator = requireNonNull(sliceGenerator, "Argument sliceGenerator");
this.current = null;
}
项目:athena
文件:MeteredAsyncConsistentMap.java
@Override
public CompletableFuture<Versioned<V>> computeIf(K key,
Predicate<? super V> condition,
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
final MeteringAgent.Context timer = monitor.startTimer(COMPUTE_IF);
return super.computeIf(key, condition, remappingFunction)
.whenComplete((r, e) -> timer.stop(e));
}
项目:filter-sort-jooq-api
文件:AbstractFilterValue.java
AbstractFilterValue(final KeyParser keyParser, final BiFunction<Object, Object, Condition> conditionCreator, final boolean throwOnMissingKeysFound) {
this.conditionSupplier = null;
this.keyParser = Objects.requireNonNull(keyParser);
this.conditionCreator = null;
this.conditionCreator2 = Objects.requireNonNull(conditionCreator);
this.throwOnMissingKeysFound = throwOnMissingKeysFound;
}
项目:openjdk-jdk10
文件:SortedOpTest.java
/**
* Interpose a consumer that asserts it is called at most N times.
*/
<T, S extends BaseStream<T, S>, R> S assertNCallsOnly(S s, BiFunction<S, Consumer<T>, S> pf, int n) {
AtomicInteger boxedInt = new AtomicInteger();
return pf.apply(s, i -> {
assertFalse(boxedInt.incrementAndGet() > n, "Intermediate op called more than " + n + " time(s)");
});
}
项目:moviediary
文件:DatabaseRouter.java
/**
* Based on username and JsonObject parameter -> returns database movie history results.
*/
private BiFunction<String, JsonObject, Object> getDatabaseMovieHistory() {
return (user, json) -> {
json.remove("results");
json.getJsonArray("rows").stream()
.map(obj -> (JsonObject) obj)
.forEach(jsonObj -> jsonObj
.put("WasCinema", getCinema(jsonObj.getBoolean("WasCinema")))
.put("Start", getNormalDTFromDB(jsonObj.getString("Start"), LONG_DATE)));
return json;
};
}
项目:incubator-netbeans
文件:ActionProviderSupport.java
private static void collectStartupExtenderArgs(
@NonNull final Context ctx,
@NonNull final BiFunction<String,String,Void> consummer) {
StringBuilder b = new StringBuilder();
for (String arg : runJvmargsIde(ctx)) {
b.append(' ').append(arg);
}
if (b.length() > 0) {
consummer.apply(ProjectProperties.RUN_JVM_ARGS_IDE, b.toString());
}
}
项目:jdk8u-jdk
文件:ConcurrentHashMap.java
public final void compute() {
final BiFunction<? super K, ? super V, ? extends U> searchFunction;
final AtomicReference<U> result;
if ((searchFunction = this.searchFunction) != null &&
(result = this.result) != null) {
for (int i = baseIndex, f, h; batch > 0 &&
(h = ((f = baseLimit) + i) >>> 1) > i;) {
if (result.get() != null)
return;
addToPendingCount(1);
new SearchMappingsTask<K,V,U>
(this, batch >>>= 1, baseLimit = h, f, tab,
searchFunction, result).fork();
}
while (result.get() == null) {
U u;
Node<K,V> p;
if ((p = advance()) == null) {
propagateCompletion();
break;
}
if ((u = searchFunction.apply(p.key, p.val)) != null) {
if (result.compareAndSet(null, u))
quietlyCompleteRoot();
break;
}
}
}
}
项目:openjdk-jdk10
文件:ConcurrentHashMap.java
public final void compute() {
final Function<Map.Entry<K,V>, ? extends U> transformer;
final BiFunction<? super U, ? super U, ? extends U> reducer;
if ((transformer = this.transformer) != null &&
(reducer = this.reducer) != null) {
for (int i = baseIndex, f, h; batch > 0 &&
(h = ((f = baseLimit) + i) >>> 1) > i;) {
addToPendingCount(1);
(rights = new MapReduceEntriesTask<K,V,U>
(this, batch >>>= 1, baseLimit = h, f, tab,
rights, transformer, reducer)).fork();
}
U r = null;
for (Node<K,V> p; (p = advance()) != null; ) {
U u;
if ((u = transformer.apply(p)) != null)
r = (r == null) ? u : reducer.apply(r, u);
}
result = r;
CountedCompleter<?> c;
for (c = firstComplete(); c != null; c = c.nextComplete()) {
@SuppressWarnings("unchecked")
MapReduceEntriesTask<K,V,U>
t = (MapReduceEntriesTask<K,V,U>)c,
s = t.rights;
while (s != null) {
U tr, sr;
if ((sr = s.result) != null)
t.result = (((tr = t.result) == null) ? sr :
reducer.apply(tr, sr));
s = t.rights = s.nextRight;
}
}
}
}
项目:NullAway
文件:NullAwayJava8NegativeCases.java
static void testBuiltIn() {
java.util.function.Function<String, String> foo = (x) -> x.toString();
BiFunction<String, Object, String> bar = (x, y) -> x.toString() + y.toString();
Function<String, Object> foo2 = (x) -> null; // java.util.Function is unnanotated
Function<String, Object> foo3 =
(x) -> {
return null;
};
}
项目:OpenJSharp
文件:ConcurrentHashMap.java
ReduceValuesTask
(BulkTask<K,V,?> p, int b, int i, int f, Node<K,V>[] t,
ReduceValuesTask<K,V> nextRight,
BiFunction<? super V, ? super V, ? extends V> reducer) {
super(p, b, i, f, t); this.nextRight = nextRight;
this.reducer = reducer;
}
项目:openjdk-jdk10
文件:MultiResolutionCachedImage.java
public static Image map(MultiResolutionImage mrImage,
Function<Image, Image> mapper) {
if (mrImage instanceof MultiResolutionToolkitImage) {
MultiResolutionToolkitImage mrtImage =
(MultiResolutionToolkitImage) mrImage;
return MultiResolutionToolkitImage.map(mrtImage, mapper);
}
BiFunction<Integer, Integer, Image> sizeMapper
= (w, h) -> mapper.apply(mrImage.getResolutionVariant(w, h));
if (mrImage instanceof MultiResolutionCachedImage) {
MultiResolutionCachedImage mrcImage
= (MultiResolutionCachedImage) mrImage;
return new MultiResolutionCachedImage(mrcImage.baseImageWidth,
mrcImage.baseImageHeight,
mrcImage.sizes,
sizeMapper,
false);
}
Image image = (Image) mrImage;
int width = image.getWidth(null);
int height = image.getHeight(null);
return new MultiResolutionCachedImage(width, height, sizeMapper);
}
项目:OpenJSharp
文件:ConcurrentHashMap.java
public final void compute() {
final Function<? super V, ? extends U> transformer;
final BiFunction<? super U, ? super U, ? extends U> reducer;
if ((transformer = this.transformer) != null &&
(reducer = this.reducer) != null) {
for (int i = baseIndex, f, h; batch > 0 &&
(h = ((f = baseLimit) + i) >>> 1) > i;) {
addToPendingCount(1);
(rights = new MapReduceValuesTask<K,V,U>
(this, batch >>>= 1, baseLimit = h, f, tab,
rights, transformer, reducer)).fork();
}
U r = null;
for (Node<K,V> p; (p = advance()) != null; ) {
U u;
if ((u = transformer.apply(p.val)) != null)
r = (r == null) ? u : reducer.apply(r, u);
}
result = r;
CountedCompleter<?> c;
for (c = firstComplete(); c != null; c = c.nextComplete()) {
@SuppressWarnings("unchecked")
MapReduceValuesTask<K,V,U>
t = (MapReduceValuesTask<K,V,U>)c,
s = t.rights;
while (s != null) {
U tr, sr;
if ((sr = s.result) != null)
t.result = (((tr = t.result) == null) ? sr :
reducer.apply(tr, sr));
s = t.rights = s.nextRight;
}
}
}
}
项目:code_quality_principles
文件:CompareByNull.java
/**
* Compare values by null.
* @param left left value.
* @param right right value.
* @param compare if left and right not null then compare by function.
* @return 1, 0, -1.
*/
public int compareIfNull(User left, User right, BiFunction<User, User, Integer> compare) {
int rsl;
if (left != null && right != null) {
rsl = compare.apply(left, right);
} else if (left != null) {
rsl = -1;
} else if (right != null) {
rsl = 1;
} else {
rsl = 0;
}
return rsl;
}
项目:openjdk-jdk10
文件:Hashtable.java
/**
* {@inheritDoc}
*
* <p>This method will, on a best-effort basis, throw a
* {@link java.util.ConcurrentModificationException} if the remapping
* function modified this map during computation.
*
* @throws ConcurrentModificationException if it is detected that the
* remapping function modified this map
*/
@Override
public synchronized V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
Objects.requireNonNull(remappingFunction);
Entry<?,?> tab[] = table;
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
@SuppressWarnings("unchecked")
Entry<K,V> e = (Entry<K,V>)tab[index];
for (Entry<K,V> prev = null; e != null; prev = e, e = e.next) {
if (e.hash == hash && e.key.equals(key)) {
int mc = modCount;
V newValue = remappingFunction.apply(key, e.value);
if (mc != modCount) {
throw new ConcurrentModificationException();
}
if (newValue == null) {
if (prev != null) {
prev.next = e.next;
} else {
tab[index] = e.next;
}
modCount = mc + 1;
count--;
} else {
e.value = newValue;
}
return newValue;
}
}
return null;
}
项目:OpenJSharp
文件:CompletableFuture.java
private <U,V> CompletableFuture<V> biApplyStage(
Executor e, CompletionStage<U> o,
BiFunction<? super T,? super U,? extends V> f) {
CompletableFuture<U> b;
if (f == null || (b = o.toCompletableFuture()) == null)
throw new NullPointerException();
CompletableFuture<V> d = new CompletableFuture<V>();
if (e != null || !d.biApply(this, b, f, null)) {
BiApply<T,U,V> c = new BiApply<T,U,V>(e, d, this, b, f);
bipush(b, c);
c.tryFire(SYNC);
}
return d;
}
项目:openjdk-jdk10
文件:EconomicMapImpl.java
@SuppressWarnings("unchecked")
@Override
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
for (int i = 0; i < totalEntries; i++) {
Object entryKey = getKey(i);
if (entryKey != null) {
Object newValue = function.apply((K) entryKey, (V) getValue(i));
setValue(i, newValue);
}
}
}
项目:openjdk-jdk10
文件:SSLEngineImpl.java
@Override
public synchronized void setHandshakeApplicationProtocolSelector(
BiFunction<SSLEngine, List<String>, String> selector) {
applicationProtocolSelector = selector;
if ((handshaker != null) && !handshaker.activated()) {
handshaker.setApplicationProtocolSelectorSSLEngine(selector);
}
}
项目:OpenJSharp
文件:ConcurrentHashMap.java
ReduceEntriesTask
(BulkTask<K,V,?> p, int b, int i, int f, Node<K,V>[] t,
ReduceEntriesTask<K,V> nextRight,
BiFunction<Entry<K,V>, Map.Entry<K,V>, ? extends Map.Entry<K,V>> reducer) {
super(p, b, i, f, t); this.nextRight = nextRight;
this.reducer = reducer;
}
项目:jdk8u-jdk
文件:Hashtable.java
@Override
public synchronized V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
Objects.requireNonNull(remappingFunction);
Entry<?,?> tab[] = table;
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
@SuppressWarnings("unchecked")
Entry<K,V> e = (Entry<K,V>)tab[index];
for (Entry<K,V> prev = null; e != null; prev = e, e = e.next) {
if (e.hash == hash && e.key.equals(key)) {
V newValue = remappingFunction.apply(e.value, value);
if (newValue == null) {
modCount++;
if (prev != null) {
prev.next = e.next;
} else {
tab[index] = e.next;
}
count--;
} else {
e.value = newValue;
}
return newValue;
}
}
if (value != null) {
addEntry(hash, key, value, index);
}
return value;
}
项目:googles-monorepo-demo
文件:LocalCache.java
public V compute(K key, BiFunction<? super K, ? super V, ? extends V> function) {
stopwatch.start();
V previousValue;
try {
previousValue = oldValue.waitForValue();
} catch (ExecutionException e) {
previousValue = null;
}
V newValue = function.apply(key, previousValue);
this.set(newValue);
return newValue;
}
项目:openjdk-jdk10
文件:InPlaceOpsCollisions.java
private static <T> void testComputeIfPresent(Map<T, T> map, String desc, T[] keys,
BiFunction<T, T, T> mappingFunction) {
// remove a third of the keys
// call testComputeIfPresent for all keys[]
// removed keys should remain absent, even keys should be mapped to $RESULT
// no value from keys[] should be in map
T funcResult = mappingFunction.apply(keys[0], keys[0]);
int expectedSize1 = 0;
removeThirdKeys(map, keys);
for (int i = 0; i < keys.length; i++) {
T retVal = map.computeIfPresent(keys[i], mappingFunction);
if (i % 3 != 2) { // key present
if (funcResult == null) { // was removed
assertFalse(map.containsKey(keys[i]),
String.format("replaceIfMapped: containsKey(%s[%d])", desc, i));
} else { // value was replaced
assertTrue(map.containsKey(keys[i]),
String.format("replaceIfMapped: containsKey(%s[%d])", desc, i));
expectedSize1++;
}
assertEquals(retVal, funcResult,
String.format("computeIfPresent: retVal(%s[%s])", desc, i));
assertEquals(funcResult, map.get(keys[i]),
String.format("replaceIfMapped: get(%s[%d])", desc, i));
} else { // odd: was removed, should not be replaced
assertNull(retVal,
String.format("replaceIfMapped: retVal(%s[%d])", desc, i));
assertNull(map.get(keys[i]),
String.format("replaceIfMapped: get(%s[%d])", desc, i));
assertFalse(map.containsKey(keys[i]),
String.format("replaceIfMapped: containsKey(%s[%d])", desc, i));
}
assertFalse(map.containsValue(keys[i]),
String.format("replaceIfMapped: !containsValue(%s[%d])", desc, i));
}
assertEquals(map.size(), expectedSize1,
String.format("map expected size#1 m%d != k%d", map.size(), expectedSize1));
}
项目:vertx-spring
文件:AbstractDispatchingMetrics.java
protected final Map<M, ?> unmapWithResult(Map<M, ?> context, BiFunction<M, ?, ?> func) {
Map<M, Object> resultMap = new HashMap<>(context.size());
for (M delegate : delegates) {
Object delegateContext = context.get(delegate);
if (delegateContext != null || context.containsKey(delegate)) {
Object result = ((BiFunction) func).apply(delegate, delegateContext);
resultMap.put(delegate, result);
}
}
return resultMap;
}
项目:guava-mock
文件:LocalCache.java
@Override
public V merge(K key, V newValue, BiFunction<? super V, ? super V, ? extends V> function) {
checkNotNull(key);
checkNotNull(newValue);
checkNotNull(function);
return compute(
key, (k, oldValue) -> (oldValue == null) ? newValue : function.apply(oldValue, newValue));
}