He estado buscando una lista de Java, un conjunto o algo similar que tenga entradas caducan después de un período de tiempo determinado, pero todavía no he encontrado ninguna. Encontré el CacheBuilder
de Guava, que sería casi perfecto para mi uso, pero que es un mapa en lugar de una Lista o un Conjunto. ¿Hay algo por el estilo como este o tendré que hacer uno si quiero usarlo?¿Tiempo de Java que expira List/Set?
Respuesta
Dado que la implementación de Java HashSet utiliza internamente un HashMap, debería ser realmente fácil copiar/modificar el código para que use Guavas CacheBuilder.
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
{
static final long serialVersionUID = -5024744406713321676L;
private transient HashMap<E,Object> map;
...
En otras palabras, sólo implementar su SetWithExpiration
CacheBuilder
como un mapa de una tecla a. Esto no perderá más eficiencia de la que la implementación de Java HashSet
pierde utilizando un HashMap
subyacente.
No es tan simple. Reinventar la clase 'HashSet' es una mala idea, y no se puede simplemente" hacer que HashSet use CacheBuilder en su lugar " – Bohemian
sí, la solución de código limpio sería extender AbstractSet y usar internamente un mapa que se pasa por inyección de dependencia . –
Para usar CacheBuilder
para obtener una lista de caducidad, puede poner sus objetos en el mapa como claves y algún objeto ficticio como valores.
O use sus objetos como clave y valor. Solo tenga cuidado de no crear un nuevo objeto para cada maniquí, ya que sería un desperdicio. –
- 1. ListSet pedido por inserción
- 2. ¿ViewState expira?
- 3. MediaRecorder.setMaxDuration (int contador de tiempo) lo que sucede cuando expira el temporizador
- 4. Certificado de distribución iOS que expira. ¿Cuáles son mis opciones?
- 5. META etiqueta "expira"
- 6. ASP.NET MVC - ValidateAntiForgeryToken expira
- 7. ETag vs cabecera Expira
- 8. cabecera Expira no trabaja
- 9. persistente de autenticación Token Expira
- 10. sesión de CodeIgniter expira frecuencia
- 11. ¿La identificación de registro de GCM expira?
- 12. cabecera de cookies no válido: No se puede analizar expira atributo cuando expira atributo está vacío
- 13. elemento de la caché nunca se expira
- 14. HTTP 504 expira después de exactamente 120 segundos
- 15. Agregar Expira encabezados por imágenes específicas
- 16. tiempo de Java en GMT
- 17. Firma de acceso compartido de contenedor de blobs azul que expira
- 18. java calcular el tiempo entre dos marcas de tiempo
- 19. Cookie C#: la propiedad expira no se configurará
- 20. ¿Continuará funcionando una aplicación si mi perfil de provisión expira?
- 21. .ASPXAUTH cookie expira al final de la sesión
- 22. Interoperabilidad Java en tiempo real
- 23. La configuración expira el encabezado de un URI específico?
- 24. ¿Qué sucede cuando expira el perfil de provisión?
- 25. Método de tiempo de espera en java
- 26. java Proceso de tiempo de espera nativa
- 27. Formateo de marcas de tiempo en Java
- 28. Tiempo de ejecución de CPU en Java
- 29. HTTP expira los valores de encabezado "0" y "-1"
- 30. control de caché y expira cabecera para PHP
¿Cuál es su caso de uso? – Bohemian
También estoy teniendo problemas para ver un caso de uso. Normalmente, cuando desea almacenar en caché cosas, necesita una clave para recuperar lo que se está almacenando en caché, de ahí que cada implementación de caché funcione con la interfaz de Mapa (o algo similar). – Matt
aún puede iterar sobre el conjunto –