Implementazione di una classe per applicare la tecnica della Memoization
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user