Java memoization-Methode

Stieß ich auf ein Interessantes problem und Frage mich, ob und wie könnte man das in Java:
Erstellen Sie eine Methode, die kann memoize jede Funktion/Methode . Die Methode hat die folgenden Argumente : die Methode/Funktion und argument(s) für Sie.

Lass Sie uns zum Beispiel sagen, dass ich diese Methode :

int addOne(int a) { return a + 1;}

und ich rufe meine memoization-Methode zwei mal mit den gleichen Argumenten : addOne und 5 zum Beispiel, der erste Anruf sollte tatsächlich rufen Sie die Methode addOne und das Ergebnis zurückgeben und speichern auch das Ergebnis für das angegebene argument. Das zweite mal, wenn ich es nennen sollte wissen, wurde dies genannt, die vor und schauen Sie einfach die Vorherige Antwort.

Meine Idee wäre, so etwas wie ein HashMap<Callable,HashMap<List<Objects>,Object>> wo Sie speichern die bisherigen Antworten und schauen Sie Sie später auf.Ich denke, das lässt sich irgendwie erledigt mit lambda-Ausdrücke, aber ich bin nicht vertraut mit Ihnen.Ich bin mir nicht ganz sicher, wie Sie Sie schreiben, die diese Methode und würde schätzen etwas Hilfe.

Kann dies gemacht werden mit diesem Ansatz?

  • möglich, Duplikat der Was sind die verschiedenen Techniken für memoization in Java?
  • Blick in die Proxyfunktion Mechanismen mit Java. Sie können erstellen Sie einen proxy ein Objekt, das fängt die Methodenaufrufe, die Speicherung der return-Wert. Wenn Sie die Methode aufrufen mit den gleichen Argumenten wie einem früheren Aufruf, Sie würde das gleiche Ergebnis erhalten die zimmerreserviereung, ohne das aufrufen des zugrunde liegenden Methode. Spring caching macht das für Sie.
InformationsquelleAutor Alex | 2014-12-18
Schreibe einen Kommentar