Eligiendo una librería de Colecciones en Java

En un post anterior veíamos los componentes del API Collections de Java y una recomendación sobre su uso.

Pero en muchas ocasiones el API Collections de Java no es suficiente y tenemos que recurrir a otra librería que sea más eficiente, que ofrezca ciertas funcionalidades,…

Veamos las más importantes:

Guava:

· Antes Google Collections.

· Guava es un conjunto de librerías utilizadas en varios productos de Google, donde una parte significativa de esta biblioteca está dedicada a las colecciones.

· Colecciones 100% thread-safe

· Interesantes clases MultiSet, Multimap,…

Apache Commons Collections

· Utilizado por varios proyectos de Apache

· Útil si se necesitan funcionalidades adicionales como FIFO/LIFO (Queues)

· Clases como OrderedMap,…

Trove:

· Conjunto de clases cuando sólo se tratan con primitivos (especialmente números). En esos casos Trove aumenta el rendimiento y disminuye sobrecarga.

· Sobre grandes colecciones Trove requiere hasta 3 veces menos Heap que Java Collections (para 100.000 enteros Java requiere 6.3MB de Heap utilizando java.util.HashMap y 1,8 MB cuando se utiliza Trove)

Huge Collections

· Apropiada cuando se intentan evitar las pausas largas por GC

Fastutil

· Apropiado cuando se trabajan con colecciones muy grandes de más de 2 ^ 31 elementos

Javolution

· El motivo principal motivo utilizar Javolution es que las colecciones son deterministas y RTSJ-Safe. Por tanto apropiadas para aplicaciones en tiempo real

Goldman Sachs Collections

· Añade una gran cantidad de métodos de conveniencia para las operaciones más comunes.

· Consume menos ciclos de CPU y Heap