2012-09-27 14 views
5

Estoy devolviendo grandes cantidades de colecciones de un objeto DTO y me preguntaba si alguien podría señalarme en la dirección correcta. Cualquier tipo de colección servirá, pero no sé cuál es la más adecuada para la tarea de devolver una gran cantidad de objetos.¿Cuál es la colección más rápida de Java para recuperar grandes cantidades de DTO?

Sé que esto puede cambiar en función de subprocesos y similares, pero al menos estoy buscando orientación general y puntos de referencia. Además, estoy obligado a permanecer dentro de las colecciones estándar de Java (no hay bibliotecas de terceros).

+0

¿Son los DTO únicos? – RNJ

+0

sí. Todos los DTO serán únicos. – JoshC13

+2

array o ArrayList – irreputable

Respuesta

3

Como dice irreputable: Si necesita una colección simple, entonces ArrayList debería funcionar bien porque está basada en una matriz que es rápida por definición usando las funciones del sistema.

Si configura la capacidad inicial a un valor más alto (no sé cómo se llama un número grande), será aún más rápido porque reduce la cantidad de reasignación incremental.

Cualquier otra colección tiene algún tipo de sobrecarga, como la búsqueda de hashcodes o beeing sincronizados.

2

Un ArrayList inicializado en el tamaño correcto (si sabe cuántos DTO agregará, o un límite superior) es el Collection más simple y más pequeño que encontrará. Al establecer su tamaño en la inicialización, no necesitará cambiar el tamaño de su matriz interna, una operación que produce basura. Es mejor que use directamente una matriz, que es realmente de bajo nivel, y que necesitará administrar manualmente si necesita cambiar el tamaño (eso es lo que hace el ArrayList por usted).

Para crear un tamaño ArrayList pre-dimensionado, utilice el constructor ArrayList(int capacity).

Cuestiones relacionadas