2012-04-27 3 views
1

Après plusieurs heures, j'ai cherché des informations sur Internet, je ne me sens toujours pas sûr de rien. Mon problème est: je veux implémenter un dictionnaire sur les appareils android (base java), mes besoins sont la rapidité, puis la mémoire-efficacité, mais je ne pouvais pas décider quelle structure de données utiliser pour la recherche. J'ai une liste de structures de données, aidez-moi les comprend et choisissez:Quelle structure de données choisir? [Android Market]

  • arbre ternaires
  • TRIE
  • Aho-Corasick arbre
  • [... votre DS suggèrent ...]

Et sera très gentil si quelqu'un peut me guider sur l'obtention de résultats (de nombreux champs: prononcer, dire, phrase exemple ...) de mot après nous l'avons trouvé? Nous allons enregistrer ces informations sur un autre fichier de données?

+2

Votre question est très confuse. Cela étant dit, il existe une structure de données de paire clé-valeur intégrée appelée HashMap: http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html –

+0

Également liée à un http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html –

+0

Merci d'avoir lu, mon dictionnaire utilisera un fichier de données dict open-source, puis je les indexerai, être plusieurs dictionnaire. Je veux dire que les mots sont très volumineux et HASHMAP n'est pas efficace en mémoire et ne peut pas me donner des mots de liste qui ont le même préfixe. Je prévois d'utiliser un arbre-DS. S'il vous plaît montrez-moi un autre guide – Kiradev

Répondre

0

Il peut être mis en œuvre de plusieurs façons, l'une d'entre elles étant Trie. La route est représentée par les chiffres et les nœuds pointent vers la collection de mots. L'utilisation de trie est expliquée here

+0

Oui, je vois de bonnes nouvelles à partir de là. Et pouvez-vous me montrer où je peux apprendre à créer un multi-dictionnaire open-source comme stardict-goldendict? – Kiradev

1

Vous devez énumérer les principales préoccupations de votre conception avant de rechercher des structures de données. Quelles fonctions ce dictionnaire propose-t-il? Quelles sont les principales caractéristiques de celui-ci? Recherche rapide? Espace compact? Insertion/suppression amicale? Cross-référencement convivial? Ce n'est que lorsque vous avez ces éléments dans votre esprit que vous pouvez mesurer la qualité d'une structure candidate.

+0

Merci pour votre aide. Comme je l'ai dit, j'ai besoin de courir vite, puis de la mémoire compacte. Il sera capable de rechercher des mots de liste qui ont le même préfixe et la même recherche que les autres dictionnaires. Je suis juste coincé dans la compréhension de l'avantage et le point faible de ces DS. – Kiradev

+0

Trie et arbre ternaire sont deux bons candidats pour la recherche de préfixe/liste. Trie est plus rapide mais utilise beaucoup plus d'espace que l'arbre ternaire. Hashtable est également rapide mais ne supporte pas la liste de préfixes. – HelloWorld

+0

Thanksssss, et je ne sais pas si je manque une meilleure DS ou pas, pouvez-vous m'aider? – Kiradev

0

D'accord avec le commentaire de Hunter Mcmillen. Dans le cas où vous auriez besoin que les mots soient triés par ordre alphabétique comme un dictionnaire normal, vous pouvez utiliser Java TreeMap qui est un SortedMap.