60 votes

MultiMap simultané hautes performances Java / Scala

Je suis à la recherche d'une haute performance, simultanées, MultiMap. J'ai cherché partout mais je ne peut tout simplement pas trouver une solution qui utilise la même approche que ConcurrentHashMap (Uniquement verrouillage d'un segment de la table de hachage tableau).

Le multimap sera à la fois en lecture, ajoutés et supprimés de souvent.

Le multimap clé est une Chaîne de caractères et sa valeur est arbitraire.

J'ai besoin de O(1) pour trouver toutes les valeurs pour une clé donnée, O(N) est OK pour la suppression, mais en O(logN) serait préférable.

Il est crucial que la suppression de la dernière valeur pour une clé donnée va retirer le récipient de valeurs à partir de la clé, comme pour ne pas perdre la mémoire.

VOICI LA SOLUTION que j'ai CONSTRUIT, availbable sous ApacheV2: Index (multimap)

12voto

Rex Kerr Points 94401

Pourquoi ne pas envelopper ConcurrentHashMap [T, ConcurrentLinkedQueue [U]] avec de belles méthodes de type Scala (par exemple, une conversion implicite en Iterable ou tout ce dont vous avez besoin, et une méthode de mise à jour)?

8voto

Jon Freedman Points 4411

Avez-vous essayé Google Collections? Ils ont différentes implémentations Multimap .

4voto

Sloin Points 6086

Il y en a un à Akka bien que je ne l'ait pas utilisé.

3voto

nnythm Points 845

J'ai créé un mixin ConcurrentMultiMap qui étend le mixin mutable.MultiMap et possède un type self concurrent.Map [A, Set [B]]. Il se verrouille par clé, ce qui a une complexité en espace O (n), mais sa complexité en temps est assez bonne, si vous n'êtes pas particulièrement lourd en écriture.

1voto

Shlomi Points 1081

vous devriez donner ctries essayer. voici le pdf .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X