2012-04-27 4 views
1

Через несколько часов я искал информацию из Интернета, но до сих пор не уверен. Моя проблема: я хочу реализовать словарь на устройствах Android (база java), мои требования - скорость, а затем эффективность памяти, но я не мог принять решение о том, какую структуру данных использовать для поиска. У меня есть список структур данных, помочь мне понимает их и выбрать один:Какую структуру данных следует выбрать? [Android-словарь]

  • троичного дерево
  • TRIE
  • Ахо-Corasick дерево
  • [... ваш предложить DS ...]

И будет очень любезным, если кто-нибудь может вести меня о получении результатов (много полей: произнести, среднее, примерное предложение ...) слова после того, как мы его нашли? Мы сохраним эту информацию в другом файле данных?

+2

Ваш вопрос очень запутан. При этом существует встроенная структура данных пары «ключ-значение», называемая HashMap: http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html –

+0

Также относится к http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html –

+0

Спасибо за чтение, мой словарь будет использовать файл данных с открытым исходным кодом, а затем я проиндексирую их, может быть несколькими словарями. Я имею в виду, что слова очень большие, и HASHMAP не эффективен с точки зрения памяти и не может дать мне список слов, имеющих один и тот же префикс. Я планирую использовать одно дерево-DS. Пожалуйста, покажите мне еще одно руководство – Kiradev

ответ

0

Его можно реализовать несколькими способами, одним из которых является Trie. Маршрут представлен цифрами, а узлы указывают на сбор слов. Использование trie объясняется here

+0

Да, я вижу там что-то хорошее. И можете ли вы показать мне, где я могу научиться создавать открытый словарь с открытым исходным кодом как stardict-goldendict? – Kiradev

1

Перед поиском структур данных вам необходимо указать основные проблемы вашего дизайна. Какие функции предлагает этот словарь? Каковы основные его особенности? Быстрый поиск? Космическая компактность? Вставка/удаление дружественных? Перекрестные ссылки дружественные? Только когда у вас есть это в уме, вы можете измерить, насколько хороша структура кандидата.

+0

Спасибо за ваш совет. Как я уже сказал, мне нужно, чтобы он работал быстро, а затем компактность памяти. Он сможет искать слова списка, которые имеют тот же префикс и общий поиск, что и другие словари. Я просто застрял в понимании преимуществ и слабости этих DS. – Kiradev

+0

Trie и тройное дерево являются хорошими кандидатами для поиска/списка префикса. Trie быстрее, но использует намного больше пространства, чем тройное дерево. Hashtable также очень быстрый, но не поддерживает список префиксов. – HelloWorld

+0

Thanksssss, и я не знаю, скучаю ли я лучше DS или нет, можете ли вы мне помочь? – Kiradev

0

Согласен с комментарием Hunter Mcmillen. Если вам нужны слова для сортировки в алфавитном порядке, как обычный словарь, вы можете использовать Java TreeMap, который является SortedMap.

Смежные вопросы