web-dev-qa-db-fra.com

Y a-t-il un Trie en Java?

Duplicata possible:
Où puis-je trouver une implémentation de carte basée sur Trie standard en Java?

Je veux utiliser Trie en Java, existe-t-il une implémentation que je peux utiliser? (J'ai essayé d'en chercher un mais je ne l'ai pas trouvé).

32
Belgi

Il n'y a pas de structure de données trie dans les bibliothèques principales Java.

Cela peut être dû au fait que les essais sont généralement conçus pour stocker des chaînes de caractères, tandis que Java sont plus générales, contenant généralement tout Object (définition de l'égalité et d'une opération de hachage), bien qu'elles sont parfois limités à des objets Comparable (définissant un ordre). Il n'y a pas d'abstraction commune pour "une séquence de symboles", bien que CharSequence convienne aux chaînes de caractères, et je suppose que vous pourriez faire quelque chose avec Iterable pour les autres types de symboles.

Voici un autre point à considérer: lorsque vous essayez d'implémenter un trie conventionnel en Java, vous êtes rapidement confronté au fait que Java prend en charge Unicode. Pour avoir toute sorte d'efficacité spatiale, vous devez restreindre le chaîne dans votre trie à un sous-ensemble de symboles, ou abandonnez l'approche conventionnelle de stockage des nœuds enfants dans un tableau indexé par symbole. Cela pourrait être une autre raison pour laquelle les essais ne sont pas considérés comme suffisamment généraux pour être inclus dans la bibliothèque principale, et quelque chose à faites attention si vous implémentez la vôtre ou utilisez une bibliothèque tierce.

47
erickson