From 3fb07c6be05f39bdacf4a68c5b375471d74122e4 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Tue, 28 Jan 2020 17:41:40 +0100 Subject: [PATCH] Implementazione di una classe per applicare la tecnica della Memoization --- .../java/org/gym/fp/fpjava/type/Memoizer.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 functional-programming-java/src/main/java/org/gym/fp/fpjava/type/Memoizer.java diff --git a/functional-programming-java/src/main/java/org/gym/fp/fpjava/type/Memoizer.java b/functional-programming-java/src/main/java/org/gym/fp/fpjava/type/Memoizer.java new file mode 100644 index 0000000..21378fc --- /dev/null +++ b/functional-programming-java/src/main/java/org/gym/fp/fpjava/type/Memoizer.java @@ -0,0 +1,19 @@ +package org.gym.fp.fpjava.type; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public final class Memoizer { + private final Map cache = new ConcurrentHashMap<>(); + + private Memoizer() { + } + + public static Function memoize(Function function) { + return new Memoizer().doMemoize(function); + } + + private Function doMemoize(Function function) { + return input -> cache.computeIfAbsent(input, function::apply); + } +}