Pourquoi n’y a-t-il pas un TreeMap simultané?

J’ai quelques questions liées au paquet java.util.concurrent :

  1. Pourquoi, dans l’API java, il existe un TreeMap non concurrent d’un côté et le ConcurrentSkipListMap simultané sur un autre?

  2. Pourquoi ne l’ont-ils pas appelé ConcurrentTreeMap ? Est-il sûr de dire qu’un SkipListMap comprend un TreeMap ?

Par exemple, une HashMap non concurrente a son homologue concurrente ConcurrentHashMap . Pourquoi cela ne se produit-il pas pour le TreeMap ?

Pourquoi il y a le TreeMap non-simultané d’un côté et le ConcurrentSkipListMap l’un sur l’autre?

Je soupçonne que cela a été fait parce que créer une arborescence simultanée était trop difficile ou souffrait de problèmes de performances. En ce qui concerne les collections ordonnées, les listes de chargement sont des structures de données très simples et offrent un comportement et des performances similaires à ceux des arborescences.

En fait, je suis plus déçu qu’il n’y ait pas de collection SkipList non simultanée.

Est-il sûr de dire qu’une SkipListMap comprend un TreeMap?

Il est prudent de dire qu’un SkipList offre des fonctionnalités similaires en termes de collection ordonnée d’éléments qui donnent des performances O(logN) pour la recherche, l’insertion, la suppression, etc. Au moins, cela donne une approximation probabiliste de cette performance.

Voici une bonne page sur les skiplistes . Ce sont des structures de données extrêmement cool. Je ne peux qu’espérer qu’ils soient enseignés dans les classes de programmation de structures de données modernes.

La classe TreeMap est appelée de cette manière car elle est implémentée à l’aide d’un arbre de recherche équilibré . ConcurrentSkipListMap est appelé ainsi car il est implémenté à l’aide d’une liste de sauts . Pourquoi n’y a-t-il pas de version simultanée de TreeMap ? Peut-être parce qu’il est difficile de créer une structure arborescente pouvant atteindre de hauts niveaux de concurrence; une liste de sauts simultanée est plus facile à implémenter correctement.