Frage

Korrelation Anwendungsfall:

read input 

if (correlation-id is already generated for this input) 
{ 
   lookup the correlation-id from the cache; 
   return correlation-id; 
} 

else 
{ 
   generate the correlation-id; 
   cache it; 
   return correlation-id; 
} 

Einschränkungen: - Die Anzahl der Eingabedatensätze kann bis 500K geht so nicht zu verwenden will starke Referenzen. - will nicht, one-way-Hashes ab sofort erzeugen (ich weiß, dass, wenn wir verwenden Einweg-Hash dann gibt es keine Notwendigkeit zu Cache)

Kann jemand mir sagen, wie ComputingMap für diesen Einsatz. Ich frage das, weil es eine Notiz in der javadoc ist, der sagt „verwendet es eine Identität Gleichheit für schwach / Softkeys“.

War es hilfreich?

Lösung

Mit Google Guava / Sammlung Klassen und weiche oder schwache Schlüssel oder Werte Ihre Schlüssel Bedürfnisse starken Referenzen für die Karte zu verwenden Gleichen sein () und nicht == Cache gespeicherten Werte nachzuschlagen. Wenn Sie schwach / Softkeys haben, dann wird die Suche mit Identität gemacht, so dass Sie immer eine Cache-Miss bekommen. Also, wenn Sie den Garbage Collector GC Elemente aus Ihrem Cache wollen, dann werden Sie die Werte weich oder schwach machen müssen.

verstehe ich Google wird eine Äquivalenz Feature in Zukunft hinzufügen, damit Sie feststellen können, wenn Sie equals wollen () oder == und nicht diese Wahl für Sie gemacht durch Abnehmen stark, schwach oder weich Referenzen.

Da Ihr Tuple-Objekt implementiert equals () und hashCode (), dann tun Sie nur

new MapMaker()
    .softValues()
    .makeComputingMap(new Function<Tuple,String>() {
                                         public String apply(Tuple t) {
                                             // generate the correlation-id
                                         }
                                    });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top