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.ThrowableBiByteToShortFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiByteToShortFunction}. 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 av a2s . 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 ThrowableBiByteToShortFunction}. * @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 ThrowableBiByteToShortFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Byte, Byte>, Short> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiByteToShortFunction<X> & Memoized) (value1, value2) -> { final short returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsShortThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiFloatToByteFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiFloatToByteFunction}. 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 v a 2 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 ThrowableBiFloatToByteFunction}. * @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 ThrowableBiFloatToByteFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Float, Float>, Byte> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiFloatToByteFunction<X> & Memoized) (value1, value2) -> { final byte returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsByteThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiFloatToLongFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiFloatToLongFunction}. 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 . ja va 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 ThrowableBiFloatToLongFunction}. * @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 ThrowableBiFloatToLongFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Float, Float>, Long> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiFloatToLongFunction<X> & Memoized) (value1, value2) -> { final long returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsLongThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiIntToByteFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiIntToByteFunction}. 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 ThrowableBiIntToByteFunction}. * @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 ThrowableBiIntToByteFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Integer, Integer>, Byte> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiIntToByteFunction<X> & Memoized) (value1, value2) -> { final byte returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsByteThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiIntToLongFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiIntToLongFunction}. 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.j av 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 ThrowableBiIntToLongFunction}. * @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 ThrowableBiIntToLongFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Integer, Integer>, Long> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiIntToLongFunction<X> & Memoized) (value1, value2) -> { final long returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsLongThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiLongToCharFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiLongToCharFunction}. 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 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 ThrowableBiLongToCharFunction}. * @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 ThrowableBiLongToCharFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Character> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiLongToCharFunction<X> & Memoized) (value1, value2) -> { final char returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsCharThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiLongToFloatFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiLongToFloatFunction}. 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 av a 2s .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 ThrowableBiLongToFloatFunction}. * @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 ThrowableBiLongToFloatFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Float> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiLongToFloatFunction<X> & Memoized) (value1, value2) -> { final float returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsFloatThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiLongToShortFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiLongToShortFunction}. 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. j a va2 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 ThrowableBiLongToShortFunction}. * @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 ThrowableBiLongToShortFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Long, Long>, Short> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiLongToShortFunction<X> & Memoized) (value1, value2) -> { final short returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsShortThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiShortToByteFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiShortToByteFunction}. 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 ThrowableBiShortToByteFunction}. * @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 ThrowableBiShortToByteFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Short, Short>, Byte> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiShortToByteFunction<X> & Memoized) (value1, value2) -> { final byte returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsByteThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }
From source file:at.gridtec.lambda4j.function.bi.conversion.ThrowableBiShortToLongFunction.java
/** * Returns a memoized (caching) version of this {@link ThrowableBiShortToLongFunction}. 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. 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 ThrowableBiShortToLongFunction}. * @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 ThrowableBiShortToLongFunction<X> memoized() { if (isMemoized()) { return this; } else { final Map<Pair<Short, Short>, Long> cache = new ConcurrentHashMap<>(); final Object lock = new Object(); return (ThrowableBiShortToLongFunction<X> & Memoized) (value1, value2) -> { final long returnValue; synchronized (lock) { returnValue = cache.computeIfAbsent(Pair.of(value1, value2), ThrowableFunction.of(key -> applyAsLongThrows(key.getLeft(), key.getRight()))); } return returnValue; }; } }