List of usage examples for java.util Map computeIfAbsent
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
From source file:at.gridtec.lambda4j.function.bi.conversion.BiByteToLongFunction.java
/** * Returns a memoized (caching) version of this {@link BiByteToLongFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>/*from www. j a v a 2 s . com*/ * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiByteToLongFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiByteToLongFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Byte, Byte>, Long> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiByteToLongFunction & Memoized) (value1, value2) -> { final long returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsLong(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiLongToByteFunction.java
/** * Returns a memoized (caching) version of this {@link BiLongToByteFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>/*from w w w . j a va 2 s .com*/ * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiLongToByteFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiLongToByteFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Byte> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiLongToByteFunction & Memoized) (value1, value2) -> { final byte returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsByte(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiByteToIntFunction.java
/** * Returns a memoized (caching) version of this {@link BiByteToIntFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>//from w w w . ja v a2 s . c o m * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiByteToIntFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiByteToIntFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Byte, Byte>, Integer> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiByteToIntFunction & Memoized) (value1, value2) -> { final int returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsInt(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiLongToIntFunction.java
/** * Returns a memoized (caching) version of this {@link BiLongToIntFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>/* ww w. j a va2 s. co m*/ * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiLongToIntFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiLongToIntFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Integer> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiLongToIntFunction & Memoized) (value1, value2) -> { final int returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsInt(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiByteToFloatFunction.java
/** * Returns a memoized (caching) version of this {@link BiByteToFloatFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>/*from ww w . ja v a 2 s . c o m*/ * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiByteToFloatFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiByteToFloatFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Byte, Byte>, Float> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiByteToFloatFunction & Memoized) (value1, value2) -> { final float returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsFloat(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiByteToShortFunction.java
/** * Returns a memoized (caching) version of this {@link BiByteToShortFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>//ww w .j a v a 2 s . c om * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiByteToShortFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiByteToShortFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Byte, Byte>, Short> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiByteToShortFunction & Memoized) (value1, value2) -> { final short returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsShort(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiFloatToByteFunction.java
/** * Returns a memoized (caching) version of this {@link BiFloatToByteFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>//from ww w .jav a2 s. c o m * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiFloatToByteFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiFloatToByteFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Float, Float>, Byte> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiFloatToByteFunction & Memoized) (value1, value2) -> { final byte returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsByte(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiFloatToLongFunction.java
/** * Returns a memoized (caching) version of this {@link BiFloatToLongFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>/*from w ww. ja va 2 s.com*/ * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiFloatToLongFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiFloatToLongFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Float, Float>, Long> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiFloatToLongFunction & Memoized) (value1, value2) -> { final long returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsLong(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiLongToFloatFunction.java
/** * Returns a memoized (caching) version of this {@link BiLongToFloatFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>//from w w w . j a va 2s.c om * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiLongToFloatFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiLongToFloatFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Float> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiLongToFloatFunction & Memoized) (value1, value2) -> { final float returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsFloat(key.getLeft(), key.getRight())); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.BiLongToShortFunction.java
/** * Returns a memoized (caching) version of this {@link BiLongToShortFunction}. Whenever it is called, the mapping * between the input parameters and the return value is preserved in a cache, making subsequent calls returning the * memoized value instead of computing the return value again. * <p>/*w w w .j a v a 2 s .c o m*/ * Unless the function and therefore the used cache will be garbage-collected, it will keep all memoized values * forever. * * @return A memoized (caching) version of this {@code BiLongToShortFunction}. * @implSpec This implementation does not allow the input parameters or return value to be {@code null} for the * resulting memoized function, as the cache used internally does not permit {@code null} keys or values. * @implNote The returned memoized function can be safely used concurrently from multiple threads which makes it * thread-safe. */ @Nonnull default BiLongToShortFunction memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Short> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (BiLongToShortFunction & Memoized) (value1, value2) -> { final short returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), key -> applyAsShort(key.getLeft(), key.getRight())); } return returnValue; }; } }