Implementazione di una classe per applicare la tecnica della Memoization

This commit is contained in:
Fabio Scotto di Santolo
2020-01-28 17:41:40 +01:00
parent aa30f0eb77
commit 3fb07c6be0

View File

@@ -0,0 +1,19 @@
package org.gym.fp.fpjava.type;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public final class Memoizer<T, U> {
private final Map<T, U> cache = new ConcurrentHashMap<>();
private Memoizer() {
}
public static <T, U> Function<T, U> memoize(Function<T, U> function) {
return new Memoizer<T, U>().doMemoize(function);
}
private Function<T, U> doMemoize(Function<T, U> function) {
return input -> cache.computeIfAbsent(input, function::apply);
}
}