Les collections natives JAVA (ou les GNU Trove par exemple)
peuvent
être persistées par JOAFIP qui peut invoquer leurs méthodes de
sérialisation, ou encore faire une substitution
à l'ecriture.
Mais
ces implémentations ne sont pas les meilleurs pour avoir un lazy load
plus efficace et une plus petite utilisation de la mémoire.
Les collections JOAFIP ont des fonctionalités supplémentaires.
Ci-dessous les collections fournis avec joafip pour une meilleure persistance:
PLinkedList
(*) - liste chainée, voir l'alteranative PTreeList
PTreeList (*)(**) - liste chainée arborescente
PArrayList (*) (**)- liste tableau, voir
l'alteranative PTreeList
PLinkedHashSet (*)(**) - l'équivalent de LinkedHashSet, voir
aussi PLinkedTreeSet quand les élément sont comparables
PLinkedTreeSet (**) - un TreeSet où l'ordre des éléménents est géré.
PHashSet
(*)
PTreeSet
PLinkedHashMap (*)
PHashMap (*)
PTreeMap
fonctionnalité additionnelle de JOAFIP:
toutes
sont "écoutables", accepte un listener
(*) une implementation de IEqualsHashComparator
peut être utilisé pour ne pas utiliser les
méthodes equals/hashcode des objets stockés
(**) implementents aussi Deque and List
d'autres implémentation des inteface de collection:
PTreeList,
une
alternative à ArrayList et LinkedList
PLinkedTreeSet, une alternative à
LinkedHashSet et PLinkedHashSet quand les éléments
sont comparables
PLinkedTreeMap, une alternative à LinkedHashMap et
PLinkedHashMap quand les clés sont comparables
Les instances des itérateurs sont aussi persistables.
Les tableaux ne sont pas bon pour le lazy load car tout le
tableau
est chargé en mémoire, cela donne une mauvaise utilisation de la
mémoire quand il y a beaucoup de données. Les ArrayList et collections
basé sur des hashtable utilisent en interne un tableau.
Les alternatives PTreeList et hash collections de JOAFIP sont basés sur
des collections.