10
votes

Java Collection MiseAiTon avec le délai d'attente des éléments

Y a-t-il une certaine mise en œuvre de la collection à l'expiration des éléments.

Par exemple: xxx

xxx

Et après le temps donné ( 10000ms dans cet exemple particulier), des éléments ajoutés seront supprimés de la collection. En utilisant cela, nous empêcherons le débordement de notre CachedUsers Collection.


1 commentaires

On dirait que vous recherchez ... une cache: Stackoverflow.com/questions/9352864


4 Réponses :


2
votes

Vous pouvez implémenter cela en écrivant un wrapper pour, disons, un Treemap où vous laissez le temps d'insertion être la clé. Sur chaque insertion, vous pouvez supprimer la liste de tête qui a "expiré".

Utiliser du temps d'insertion comme une indication sur la question de savoir s'il faut ou non être abandonné semble être une mauvaise idée. Il semble mieux d'aller avec un cache LRU (le moins cher utilisé), par exemple. Ces caches sont facilement disponibles dans les bibliothèques telles que eHcache par exemple. ne réinventez pas la roue.

Questions connexes:


2 commentaires

Les insertions commises en même temps sont très rares, n'est-ce pas?


Haha. Bon point. La solution est évidemment de laisser chaque carte horodatale à un ensemble d'objets :-)



10
votes

Oui, GUAVA prend en charge une cache avec une expiration chronométrée. Voir GUAVA a expliqué la page de Caches .

Une alternative est un cache LRU (le moins-récemment utilisé) qui dispose de l'élément accessible le plus ancien lorsqu'un nouvel élément est inséré.


0 commentaires

3
votes

Ce n'est pas vraiment clair comment vous essayez d'utiliser la collection, mais de Guava's cachebuilder peut vous aider.


0 commentaires

2
votes

Une autre alternative est expirantMap : xxx


0 commentaires