Estoy implementando una ventana deslizante sobre una secuencia de eventos, en Java. así que quiero una estructura de datos que me permite hacer lo siguiente:¿Alguna biblioteca de Java proporciona una implementación de cola de acceso aleatorio?
añadir al final de la estructura de datos cuando se producen nuevos eventos;
eliminar desde el principio de la estructura de datos cuando se procesan eventos antiguos;
obtienen acceso aleatorio estándar (
size()
,get(i)
) a los elementos de la estructura de datos; en general, operaciones típicas de "lectura" List;es eficiente para todas las operaciones anteriores;
no tiene límites.
No se requiere otro acceso. Y no se requiere seguridad de hilo.
Actualmente estoy haciendo esto con un ArrayList, para poner todo en funcionamiento. Pero quiero algo más eficiente; el método remove(0)
(2. arriba) es ineficiente con un ArrayList
.
Los números 1. y 2. son operaciones estándar de estilo Queue. Sin embargo, las implementaciones de Queue
en el JDK (como ArrayDeque) no permiten get(i)
en 3.
Por lo tanto, me pregunto si hay algún bibliotecas por ahí que tienen este tipo de implementación, y son adecuado para uso comercial.
Si no es así, creo que voy a recurro a escribir mi propia ...
Cómo relativamente frecuentes son estas operaciones? Es posible que deba cambiar algún espacio importante por tiempo, p. podría usar una lista enlazada cíclicamente con un índice para recuperación rápida (índice: Olvidé el nombre para esta estructura, un árbol binario de apuntadores a 0 y n/2, cada uno de los cuales almacena punteros al punto medio de su mitad, etc.) –