Java ont une benne de la mise en œuvre de la liste
Je trouve ConcurrentSkipListSet
en Java Cadre de Collecte, qui est soutenu par un saut de liste. Mais est-il un saut de liste en Java? Un jeu ne fonctionne pas dans mon cas d'utilisation. J'ai besoin d'un indexables liste qui prend en charge les doublons.
Qu'est-ce un skiplist que vous avez besoin pour votre programme? Si vous souhaitez un indexables liste de soutenir les doublons, pourquoi ne pas simplement utiliser un
indexables liste qui prend en charge les doublons ... ArrayList ?
ArrayList
?indexables liste qui prend en charge les doublons ... ArrayList ?
OriginalL'auteur Wei Shi | 2011-07-28
Vous devez vous connecter pour publier un commentaire.
Puisque vous avez mentionné une Liste qui est à la fois Indexables (je suppose que vous voulez rapide de récupération) et de la nécessité d'autoriser les doublons, je vous conseille d'y aller pour un Jeu personnalisé avec une LinkedList ou ArrayList peut-être.
Vous avez besoin d'avoir un Ensemble de base, un HashSet par exemple, et continuez d'ajouter des valeurs à lui. Si vous faites face à un double, la valeur du Set point à une Liste. Donc, que vous aurez à la fois Rapide et la récupération et de cours vous permettra de stocker vos objets dans un pseudo Collection.
Cela devrait vous donner une bonne efficacité de la récupération. Idéalement, si vos Clés ne sont pas des doublons, vous permettra d'atteindre un O(1) que la vitesse de récupération.
OriginalL'auteur bragboy
Cette réponse est 3 ans de retard mais j'espère que ce sera utile pour ceux qui veulent un Java sauter de la liste à partir de ce moment 🙂
Cette solution permet de doublons que vous avez demandé. J'ai suivi à peu près le guide ici http://igoro.com/archive/skip-lists-are-fascinating, de sorte que les difficultés sont de semblable à cela, sauf supprimer coûts O(nlogn) - que je n'ai pas pris la peine à l'aide de double liaison nœuds, j'imagine que cela permettrait de ramener supprimer en bas à O(logn).
Code se compose de: une interface, le saut de la liste de la mise en œuvre de l'interface et la classe de nœud. Il est également au générique.
Vous pouvez régler le paramètre NIVEAUX pour la performance, mais n'oubliez pas l'espace-temps de compromis.
Pouvez-vous s'il vous plaît corriger le bug mentionné par @idipous?
... ou @idipous pouvez-vous s'il vous plaît corriger le bug?
J'ai fini par utiliser une autre mise en œuvre, afin de ne jamais obtenu autour de la fixation de ce
ajout d'une réponse qui corrige le bug
OriginalL'auteur PoweredByRice
Vous pouvez utiliser le code ci-dessous pour faire votre propre de base skiplist :
1)Faire commencer et fin à
represent start and end of skip list
.2)
Add the nodes
etassign pointers
à la prochainebased on
Code Java de base, sauter de la liste (vous pouvez ajouter plus de fonctionnalités, si vous voulez):
De sortie:
--Simple Traversal--
1=>2=>3=>4=>5=>6=>
--Voie Rapide Traversée--
2==>4==>6==>
OriginalL'auteur Prateek Joshi
J'approuve à utiliser la liste arborescente de apache-collections et de la décorer avec SortedList de Heureux Bibliothèques Java
https://sourceforge.net/p/happy-guys/wiki/Sorted%20List/
OriginalL'auteur thinker
Lorsque vous créez un
ConcurrentSkipListSet
, vous passez un comparateur pour le constructeur.Vous pouvez créer un comparateur qui feront de votre
SkipListSet
se comporter comme une Liste normale.OriginalL'auteur tomekl007
Je ne prétends pas que c'est ma propre mise en œuvre. J'ai juste ne me souviens pas où je l'ai trouvé. Si vous connaissez faites le moi savoir et je vais mettre à jour. Ce travail a été très bien pour moi:
OriginalL'auteur idipous
Correction du bug dans la mise en œuvre fournis par @PoweredByRice. Il jeta un NPE pour les cas où le nœud supprimé était le premier nœud. D'autres mises à jour sont renommés les noms de variables et de l'inverse de l'impression de l'ordre de sauter de la liste.
OriginalL'auteur Neo